c - 如何检查指针是否在分配的内存中写入?

标签 c pointers memory-management malloc

我在与面试官讨论时遇到这个问题:

如果我从 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/

相关文章:

pointers - vector <list <T >>是否保证元素地址保持不变?

ios - tableView 和释放实例的问题

c - C 中参数数量未知的函数

c - 无限循环和带有 : while (chars = fgetc(map) ! = EOF 的奇怪字符)

c - int32_t 的格式字符串?

android - 一个典型的 android 应用程序应该使用多少内存?

C++ 平面数组与多维数组内存占用

c - 只读取文件中每一行的第一个字符

c++ - 将二维对象数组的指针传递给方法

c - 如何对数组使用 scanf 函数