如何解决通过malloc分配的空间传递指针
我刚刚编写了一个函数,该函数返回一个指向malloc分配的内存块的指针。如果我对返回的指针调用free(),这将释放内存吗? 我尝试阅读此内容,但找不到任何内容表明您是否可以调用指向同一位置的不同指针,以及这是否将释放所有内存。 这可能主要是基础知识,我想找不到信息,因为我搜索错误。 任何帮助表示赞赏!解决方法
是的,调用
free
将释放内存。它不是释放的指针,而是指针指向的内存被释放。
, 您必须将从malloc()
获得的值传递给free()
。
int *x = malloc(42 * sizeof *x);
int *p = &x[0];
free(p); /* ok,same as free x; x and p have the same value */
编辑:另一个例子
int *x = malloc(42 * sizeof *x);
for (k = 0; k < 24; k++) *x++ = 0; /* zero first 24 elements */
free(x - 24);
, 您在这里问的内容还不是很清楚,但是您要问的是:
Can I call free() on a pointer which points to a location within the allocated block?
那么答案是“否”-您必须向free()
传递从malloc()
返回的确切指针。试图将内部指针设置为“ 1”,或未由“ 2”分配的指向内存的指针,则可能发生内存损坏或崩溃。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。