例如,我在 C 上分配了一 block 内存。
void* block = malloc(1024*10);
在运行时,我从不手动更改它。但是,它可能会因为内存损坏、杂散指针或野指针而被更改。
memset(straypointer, 1, 1);
这种情况发生的情况非常非常罕见,但是,它仍然有机会。
所以,我想知道是否有可能知道我的内存块已被意外更改。
我猜某种内存池可以做到这一点,但我没有进一步的想法。
最佳答案
如果您使用的是 Windows:不要使用 malloc
,而是使用 VirtualAlloc 。然后用你想要的任何东西填充内存,然后使用 VirtualProtect保护该内存。
然后,一旦有人写入该内存区域,您的程序就会崩溃(或者如果已调试,则崩溃到调试器中)。对于其他系统使用类似的方法(取决于系统)。
关于c - 是否有可能检测到内存块被 C 上的杂散指针或野指针更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33260747/