我在与面试官讨论时遇到这个问题:
如果我从 malloc 分配了 4 个字节的内存。
int *p = (int*) malloc(4);
现在如果我将指针移动 4 个字节。
p++;
现在指针指向的内存超出了 malloc 分配的 4 字节内存。假设此内存具有读写权限。
*p=4;
这意味着指针将超出分配的内存。
现在考虑这样一种情况,我分配了一些内存,但每当我的指针移出分配并写入该内存时,我想得到通知,但如何通知??
我只有 malloc 并且可以免费使用。
最佳答案
有一个图书馆叫做 Electric Fence 这就是你想要的。
它会拦截您的 malloc 调用。它通过分配内存页面并将页面边界恰好放在分配的内存末尾来工作。分配后的页面 内存未映射。如果程序试图写入超过分配的内存,则会生成 SIGSEGV(段错误)。
关于c - 如何检查指针是否在分配的内存中写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36863870/