在程序运行的过程中,有时候会抛出错误SIGSEGV。
什么是SIGSEGV?
SIGSEGV: SIG 是信号名的通用前缀, SEGV 是segmentation violation,也就是存储器区段错误。
SIGSEGV原因:
一般是无效的内存引用,导致进程异常终止。一般可以具体为下面三种情况:
- 访问空指针。
char *c = NULL;
...
*c; // dereferencing a NULL pointer
- 内存越界访问
char *c = "Hello";
...
c[10] = 'z'; // out of bounds, or in this case, writing into read-only memory
- 访问已经释放的内存
char *c = new char[10];
...
delete [] c;
...
c[2] = 'z'; // accessing freed memory
如何避免SIGSEGV
- 申请内存之后,需要check 内存申请是否成功,然后再去访问内存。
- 确保申请的内存大小能满足使用的需求,避免越界访问。
疫情什么时候可以结束呢???