在我整個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