《coredump问题原理探究》Linux x86版5.4节C风格数据结构内存布局之数组coredump例子
试定位一个coredump的例子来验证一下。
堆栈:
#include <stdlib.h> #include <string.h> int main() { int* ptrArray[4] = { NULL, }; for ( int i = 0; i < 4; i += 2 ) { ptrArray[i] = new int[8]; } for ( char c = 0; c < 4; c++ ) { memset( ptrArray[c], c, 8*sizeof(int) ); } return 0; }
就可以知道ptrArray[1]由于第一个循环,确实没有分配到内存,仍然为空。