-5

我正在尝试将数据从我知道其长度的缓冲区复制到从给定索引开始的 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++;
}
4

1 回答 1

2

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

因此,这样做*pEnd是取消引用一个 NULL 指针,这显然会出现段错误。

如果您想对此进行检查,可以在取消引用之前检查指针。例如:

if(pEnd == NULL)
    //Do nothing or throw error or something
else
    //Go ahead and do your stuff 
于 2013-01-08T22:45:07.583 回答