char *分段错误

char * SEGMENTATION FAULT

本文关键字:错误 分段 char      更新时间:2023-10-16

我试图从一个缓冲区复制数据,我知道它的长度到一个char[]从给定的索引开始,问题是数据包含null,所以程序崩溃的分割错误。

下面是我的代码示例:

char *tmp = list->at(0); //list->at(0) return a pointer to the data
char *pEnd = tmp;
for (i = 0; i<size;i++)
{
     buffer[i] = *pEnd ; //<<<-----here I got the segmentation fault
     pEnd++;
}

如果您说list->at(0)返回NULL,那么指针pEnd将是NULL

因此,这样做*pEnd是取消引用NULL指针,这显然会导致seg错误。

如果你想检查这个,你可以在取消引用之前检查指针。如:

if(pEnd == NULL)
    //Do nothing or throw error or something
else
    //Go ahead and do your stuff