通过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”分配的指向内存的指针,则可能发生内存损坏或崩溃。     

要回复问题请先登录注册