例如,我在C上分配了一块内存。
void* block = malloc(1024*10);
在运行时,我从不手动更改它。但是,它可能会因内存损坏,杂散指针或野指针而改变。
memset(straypointer, 1, 1);
这种情况非常罕见,但仍有机会发生 所以,我想知道是否有可能知道我的内存块已被意外更改。
我想某种内存池可以做到,但我没有进一步的想法。
答案 0 :(得分:2)
如果您使用的是Windows:请勿使用malloc
,VirtualAlloc。然后用你想要的任何东西填充内存,然后用VirtualProtect来保护那个记忆。
然后只要有人写入该内存区域,您的程序就会崩溃(如果调试则会崩溃到调试器中)。对于其他系统,请使用类似的方法(取决于系统)。