gpt4 book ai didi

c - 当我释放字符串数组时,我的程序崩溃了

转载 作者:行者123 更新时间:2023-11-30 15:49:59 24 4
gpt4 key购买 nike

我需要分配一个字符串数组。长度为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com