【发布时间】:2016-12-06 09:45:14
【问题描述】:
假设我有这个代码:
for (int i=0;i<n;i++) {
//compute z
float *p = (float *) malloc (sizeof(float)*z);
//do something with p
}
请注意,p 不会在其他任何地方使用,并且每个 for 循环彼此独立。
假设z 没有那么大,那么单个 p 在内存方面并没有那么昂贵。但是n可能很大,所以p占用的总内存可以保持一致。
free() 是否正确:
for (int i=0;i<n;i++) {
//compute z
float *p = (float *) malloc (sizeof(float)*z);
//do something with p
free(p);
}
额外问题:如果优先考虑时间性能(而不是内存消耗),最好避免使用free(p),因为它很耗时?
【问题讨论】:
-
这里为什么有C++标签?
-
@EdgarRokyan 你是对的。