我需要分配一个字符串数组。长度为100,每个单元格可以包含100个字符的字符串。

typedef char* (*Encryptor3)(char*, char);
char** encryptToString(char** input,int length,int first,Encryptor3 encryptor)
{
int i=0;
char** output=(char **)malloc(sizeof(char*)*length);
for(i=0;i<length;i++){
    output[i]=(char *)malloc(sizeof(char)*(100+1));
}
output[0]=encryptor(first,input[0]);
output[1]=encryptor(first,input[1]);

for(i=2; i<length ; i++)
{
    output[i]=encryptor(output[i-2],input[i]);
}
return output;
}

int main()
{
    char plain[] = {'p','l','a','i','n','t','e','x','t'};
    char** outputS = encryptToString(plain, 9, "test", idenString);
    int i;
    for(i=0; i<9; i++)
        printf("%s\n", outputS[i]);
    for(i=0; i<9; i++) //deallocating my array of strings
        free(outputS[i]);
    free(outputS);
    return 0;
}


行“ free(outputS [i]);”将导致程序崩溃,我将收到一个普通错误,提示“ myp.exe停止工作”。

最佳答案

代替

output[...]=encryptor(...);


做:

strcpy(output[...], encryptor(...));


假定encryptor()使用的缓冲区是静态的。

还要确保encryptor()返回的字符串不大于您分配给output引用的指针的字符串,即100个字符,不包括结尾的零终止符。

关于c - 当我取消分配字符串数组时,我的程序崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16004556/

10-11 22:50
查看更多