函数中的struct指针范围

如果我在函数中有以下内容:

struct example *A=malloc(sizeof(struct example)); 

节点/内存空间是否在函数结束/离开后A点指向被销毁? 还是它留在堆里?

malloc分配的malloc将保持分配直到free

做这样的事情:

 char * function(void) { char c = 'a'; return &c; } 

另一方面,很糟糕,因为当该function结束时,该对象超出范围。

malloc在堆上分配内存。 声明变量会在堆栈上分配空间。 堆栈受范围影响,堆不受影响。

有关使用指针的其他信息,包括内存泄漏等各种问题(丢失对malloc内存的引用以使其永久存在的过程),请访问此链接 。

你必须free malloc一切。 当函数返回时,变量A超出范围,但内存保持分配状态。 当你丢失了指向内存的指针(除非存储在其他地方),你正在泄漏内存 。

如果仍然需要A指向的内存,则可以返回指向已分配结构的指针,稍后将其释放。 如果在函数返回后不需要分配的内存,请使用free(A)释放内存。