相关疑难解决方法(0)

使用realloc(X,0)代替free()并使用长度为+1的malloc +1

所以这次我真的不知道如何把这个头衔.首先,我想说,如果问题与"家庭作业"有关,我在这个页面上看到了一些关于警告的评论.我的是,但它也已完成,我只是想进一步了解代码发生了什么.

我也读了一段时间的帖子和书籍,但我想我仍然缺少一些东西.

我有两行代码我在我使用的代码中不太了解.这项工作是关于获取用作参数的任何文件(如果它是0文件,它从stdin读取),并在标准输出上向后打印它.所有这些,谈论C,因为我试图放入标签.

第一个问题是:

array = realloc (array, 0);
Run Code Online (Sandbox Code Playgroud)

其中数组定义为

char **array;
Run Code Online (Sandbox Code Playgroud)

问题是免费不起作用,它没有释放使用的空间(也许我用错了?在其他地方我知道如何使用它,但不是这次).通过我已经完成的测试和我读过的内容,我相信realloc也在做同样的事情,但我不是100%.

第二个是:

char* alloc = malloc (strlen ((char*)string)+1);
Run Code Online (Sandbox Code Playgroud)

其中alloc用于复制我要放入数组的行的确切长度,所以我可以在此之后向后打印文本.

问题是为什么我必须使用+1.我的意思是如果由于某种原因我不使用它不起作用,我尝试使用不同的数字,它每次都有效,但如果我不这样做+1它不能正常工作.

我知道可能这个问题太模糊,而且写的很糟糕,但是我又不确定这一点,我也尽力解释自己(英语没有母语,因为它可能很明显).

c free memory-management realloc

7
推荐指数
3
解决办法
9051
查看次数

标签 统计

c ×1

free ×1

memory-management ×1

realloc ×1