我首先声明一个指针数组
int q,k;
char ***schArray;
schArray = malloc(sizeof(char**)*1000);
for(q = 0; q < 1000; q++) {
schArray[q] = malloc(sizeof(char*)*100);
for(k = 0; k < 1000; k++) {
schArray[q][k] = malloc(sizeof(char)*100);
}
}
char buf[80]={0};
然后我从管道读取一些数据,将其放入buf并将其复制到指针数组
strcpy(schArray[commandnum][0], buf);
之后,我想清理Pointer Array的内容。我使用以下代码。
schArray[commandnum][0]=NULL;
之后,我无法通过代码将任何数据写入schArray [commandnum] [0]
strcpy(schArray[commandnum][0], buf);
上面的代码有错误吗?
答案 0 :(得分:1)
我认为您要将分配的字符串的第一个字符设置为'\0'
。您可以使用
schArray[commandnum][0][0] = '\0';
您当前的代码替换(并泄漏)指向malloc(sizeof(char)*100)
顺便说一下,在有人提醒我之前,请注意sizeof(char)
保证为1,因此malloc
可以简化为malloc(100)
。