动态vs静态数组

问题描述 投票:0回答:2

动态内存分配是否确实:int * ptr = new int [3]比静态分配:int ptr [3]需要更多的RAM,因为要多存储4个字节来存储指针?

c++ pointers memory dynamic
2个回答
0
投票
基本上在性能上存在差异,动态分配使用堆(因此,在程序调用新运算符时,它会要求OS分配OS的内存)函数内部的静态分配(在某些情况下)使用堆栈(预先定义的内存),可以在运行时更快地进行分配。

0
投票
这取决于您所处的状况。

dynamic分配使用堆,因此当您使用new时它必须向OS索取。static分配使用堆栈,因此程序启动后,内存“请求”比动态分配要快。

如果需要一个小的数组,并在简单的操作中使用它,出于锻炼目的,静态分配就足够了。

See

C/C++ performance of static arrays vs dynamic arrays
© www.soinside.com 2019 - 2024. All rights reserved.