2013-04-20 37 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