Tim*_*mmy 1 c malloc free dynamic-memory-allocation dynamic-allocation
假设我有以下代码:
typedef struct {
int numBars;
BarType *bars;
} fooType;
foo = (fooType *) malloc(sizeof(fooType));
foo->bars = (BarType *) malloc(sizeof(barType));
Run Code Online (Sandbox Code Playgroud)
调用free(foo)也会释放条形码或者我需要这样做:
free(foo->bars);
free(foo);
Run Code Online (Sandbox Code Playgroud)
直观地说,我觉得调用free(富)应该是足够了 - 如果我不需要调用free(foo-> numBars)我不应该需要调用free(foo->条).但是我没有为numBars手动分配内存,而是为了吧.
对于每一个malloc
你需要的人free
.没有什么是"自动"为你完成的.
需要注意的是,违背了你的要求,你就不是真正必须分配任何内存bars
,就像你不必为分配内存numBars
.但是,您正在为其分配内存*bars
.
一颗星可以在C中产生很大的影响......