动态内存分配中的元素数和内存大小

时间:2018-02-16 15:56:08

标签: memory dynamic numbers allocation elements

我对c或c ++中的动态内存分配有疑问! 当我们想要计算出数组的大小时,我们使用sizeof函数!

此外,如果我们想弄清楚数组中的元素数量,我们会这样做:

int a[20];
cout << sizeof(a) / sizeof(a[0]) << endl;

我想知道我们是否能算出动态分配的内存的数量和实际大小。 如果你告诉我如何,或者向我介绍参考,我将非常感激。

1 个答案:

答案 0 :(得分:0)

在您的代码中,a[20]被静态分配(在堆栈中)。使用的内存始终为20 * sizeof(int)大小,并在函数末尾释放。

当您动态(在堆中)分配如下数组:int* a = malloc(20*sizeof(int))时,您可以选择占用x个内存并根据需要填充它。因此,您有责任增加或减少数据结构所包含的元素数量。分配此内存量直到您释放它(free(a))。

无论如何,占用的内存的实际大小总是相同的(在我们的例子中是20*sizeof(int))。

查看有关堆栈/堆,静态/动态的信息:Stack, Static, and Heap in C++