一段简单的代码告诉你什么叫内存溢出
#include <stdio.h> int FooArray[4] = {1, 1, 1, 1}; int VeryImportantValue = 7; void main() { printf("%d\n", VeryImportantValue); for (int i = 0; i <= 4; i++) { FooArray[i] = 4; } printf("%d\n", VeryImportantValue); }
这是个非常easy的内存溢出,可是会造成严重的后果。以前在真实项目中有类似的情况发生,经过万般调试,崩溃的地方十分诡异,最后发现,原来发生了内存溢出,定义的 8 个元素的数组去存储注冊表中的某项以下的键值,但在某台机器上,因为不同设备的热插拔,导致以下的键值超过了 8 个,从而导致了内存的溢出造成崩溃。崩溃还算是个良好的结果,假设造成其他未崩溃但不能补救的结果,影响可想而知。其简单模型就是上面的代码。