2013-04-20 35 views
1

有沒有辦法創建一個函數,可以將一塊內存分配到堆上,調用者可以傳遞他們想要分配的大小並返回一個有效地址給調用者使用?我知道如何分配一個特定的大小,但有沒有辦法讓一個調用者傳遞所需的數量?如何通過用戶輸入在堆上分配內存?

+0

隨着參數? – chris 2013-04-20 02:41:04

+1

你不只是描述['malloc'](http://www.cplusplus.com/reference/cstdlib/malloc/)? – jwodder 2013-04-20 02:42:38

回答

5

絕對:即使在C malloc/calloc/realloc都以尺寸作爲他們的參數,並且他們不關心這個尺寸來自哪裏; new也是如此。

例如,如果你想分配的double個用戶指定的號碼,你這樣做:

cout << "Enter the number of double elements that you want to allocate" << endl; 
int count; 
cin >> count; 
// You can do this for C-style allocation... 
double *chunkMalloc = malloc(sizeof(double)*count); 
// ...or this for C++ style: 
double *chunkNew = new double[count]; 
// Don't forget to free allocated chunks: 
free(chunkMalloc); 
delete[] chunkNew; 
+0

非常感謝你......我對編程非常陌生,所以這對我很有幫助 – Nick 2013-04-20 02:59:24