0

我首先声明一个指针数组

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); 

之后,我想清理指针数组的内容。我使用以下代码。

schArray[commandnum][0]=NULL;

之后,我无法通过代码将任何数据写入 schArray[commandnum][0]

strcpy(schArray[commandnum][0], buf);

上面的代码有错误吗?

4

1 回答 1

1

我认为您想将分配的字符串的第一个字符设置为'\0'. 你会这样做使用

schArray[commandnum][0][0] = '\0';

您当前的代码替换(并泄漏)指向由分配的缓冲区的指针malloc(sizeof(char)*100)

顺便说一句,在任何人拉我之前,请注意sizeof(char)保证为 1,因此malloc可以简化为malloc(100).

于 2013-05-02T10:41:21.743 回答