有没有办法创建一个可以将一块内存分配到堆上的函数,调用者可以传递一个他们想要分配的大小并返回一个有效的地址供调用者使用?我知道如何分配特定的大小,但有没有办法让呼叫者通过所需的金额?
答案 0 :(得分: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;