【发布时间】:2016-04-02 05:17:36
【问题描述】:
如果我有指针:char ** tmp = (char **)malloc(sizeof(char *) * MAX_SIZE),
为每个块赋值后,我有一个新指针char ** ptr = tmp。
1)。我可以在没有free 的情况下再次tmp = (char **)malloc(sizeof(char *) * MAX_SIZE) malloc 吗?
2)。 ptr 是否仍然具有值,并且 tmp 是否指向新的内存块?
我有一个函数可以在最后释放所有使用的内存,所以不用担心free。
【问题讨论】:
-
简单回答 1=是,2=是。更多解释:当您
malloc第一次分配内存块并且tmp获取指向该位置的指针时。然后您将指针存储到ptr(现在tmp和ptr都有指向同一位置的指针)。当您调用第二个malloc时,分配了另一块内存,tmp获取新指针。但是ptr还是有旧的。
标签: c memory-management malloc