在我整个CS生涯中忽略了C后,我决定给它看一看!为什么我们需要calloc(或malloc)?
当初始化变量,我们可以有:
int b = 0;
这初始化b,为其分配内存,我们可以在以后用
b = 2;
更新如果需要的话。
所以,原谅我这个可笑的“小白”的问题,但为什么我们需要一个像电话:
double *b = (double *) calloc(n, sizeof(double));
初始化变量将已经分配的空间,它的时候
?
为什么我们不只是做
double b = 0;
b* = b.addressOf(b) //or some similar construct.
什么用的呢?
我试过谷歌搜索这没有用,所以请原谅我 - 很遗憾*谷歌是一个通配符,所以相关的结果很难找到。
不同的是静态分配(堆栈)和动态分配(在HEAP) –
阅读这一个:http://stackoverflow.com/questions/8385322/difference-between-static-memory-分配和动态内存分配 – pablochan
另外一个原因是你并不总是事先知道你需要多少数据。'double d [1000];'如果你只需要几个元素是非常浪费的,如果你需要超过1000个元素是很危险的。如果你可以在运行时确定你需要多少,你可以使内存使用更有效率。 – mah