将大数组内容拷贝到小数组时,一定要用strcpy()函数,不然会出错。
错误还不容易发现,只有在你释放内存时,程序才会当掉。
int main(int argc, char **argv)
{
int i = 0;
char ** save = (char **)malloc(sizeof(char*) * 6);//./a.txt文件里只写了6行
FILE *fp = fopen("./a.txt", "r");//与当前c文件同目录下新建一个.txt文件。
if (fp)
{
char buf[1024];
while (!feof(fp))
{
memset(buf, 0, 1024);
fgets(buf, 1024, fp);
int a = strlen(buf) + 1;
save[i] = (char*)malloc(sizeof(char*)*a);
save[i] = buf;
strcpy(save[i], buf); //一定要用拷贝函数
/* printf("%s\n", save[i]);
printf("%d\n", i);*/
i++;
}
}
for (int i = 0;i < 6;i++)
{
printf("%s\n", save[i]);
}
for (int i = 0;i < 6;i++)
{
if (save[i] != NULL)
{
free(save[i]);
save[i] = NULL;
}
}
free(save);
fclose(fp);
system("pause");
}
本文通过一个具体的C语言示例,展示了如何正确地使用strcpy()函数来避免在将大数组内容复制到小数组时可能遇到的内存溢出问题。文章强调了在释放内存前检查并修复此类错误的重要性。
函数,不然会出错&spm=1001.2101.3001.5002&articleId=106023672&d=1&t=3&u=4906f749f96a480093f60dca12645889)
1583

被折叠的 条评论
为什么被折叠?



