c - 是否有可能检测到内存块被 C 上的杂散指针或野指针更改?

标签 c pointers

例如,我在 C 上分配了一 block 内存。

void* block = malloc(1024*10);

在运行时,我从不手动更改它。但是,它可能会因为内存损坏、杂散指针或野指针而被更改。

memset(straypointer, 1, 1);

这种情况发生的情况非常非常罕见,但是,它仍然有机会。
所以,我想知道是否有可能知道我的内存块已被意外更改。

我猜某种内存池可以做到这一点,但我没有进一步的想法。

最佳答案

如果您使用的是 Windows:不要使用 malloc,而是使用 VirtualAlloc 。然后用你想要的任何东西填充内存,然后使用 VirtualProtect保护该内存。

然后,一旦有人写入该内存区域,您的程序就会崩溃(或者如果已调试,则崩溃到调试器中)。对于其他系统使用类似的方法(取决于系统)。

关于c - 是否有可能检测到内存块被 C 上的杂散指针或野指针更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33260747/

相关文章:

c - 在具有较大值(value)的Visual Studio中重新分配失败

c++ - 指针说明

c++ - 为什么我不必给函数数组的地址

c - 对数组指针自增的疑问

c - 如何使用 printf 将指针值格式化为 0x0000...?

c - 递归列出目录

C 字符数组指针不是有效语句

c - 我可以使用 graph api 设置 Facebook 页面吗?

c++ - 复制构造函数双向链表中的段错误

c++ - 通过指针递增遍历C字符串