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

时间:2015-10-21 13:33:15

标签: c pointers

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

void* block = malloc(1024*10);

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

memset(straypointer, 1, 1);

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

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

1 个答案:

答案 0 :(得分:2)

如果您使用的是Windows:请勿使用mallocVirtualAlloc。然后用你想要的任何东西填充内存,然后用VirtualProtect来保护那个记忆。

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