什么是 SIGSEGV 以及导致报错的原因

    技术2022-07-11  96

    在程序运行的过程中,有时候会抛出错误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 内存申请是否成功,然后再去访问内存。确保申请的内存大小能满足使用的需求,避免越界访问。

    疫情什么时候可以结束呢???

    Processed: 0.010, SQL: 9