Есть ли способ создать функцию, которая может выделять кусок памяти в куче, где вызывающий может передать размер, который он хочет выделить, и вернуть действительный адрес для вызывающего абонента? Я знаю, как выделить определенный размер, но есть ли способ, чтобы вызывающий абонент передал желаемую сумму?
Абсолютно: даже в C malloc
/calloc
/realloc
все принимают размер в качестве параметра, и им все равно, откуда этот размер; то же самое касается new
,
Например, если вы хотите выделить указанное пользователем количество double
s, вы делаете это:
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;
Других решений пока нет …