new/delete据说动态分配在免费商店中进行,
而malloc/free操作则使用堆.
在实践中,我想知道是否存在实际差异.
编译器是否区分了这两个术语?(免费商店和堆,不new/malloc)
这两个声明之间有什么区别吗?
int x[10];
Run Code Online (Sandbox Code Playgroud)
与
int* x = new int[10];
Run Code Online (Sandbox Code Playgroud)
我认为前一个声明(如后一个声明)是一个指针声明,两个变量都可以相同.这是否意味着它们本质上是一样的?
我试图找到免费商店通常被称为堆的官方(或足够好)的原因.
除了它从数据段的末尾增长之外,我无法想到一个很好的理由,特别是因为它与堆数据结构几乎没有关系.
注意:很多人都提到它只是一大堆没有组织的东西.但对我来说,术语堆物理意味着一堆物理依赖于彼此的东西.你从下面拉出一个,其他一切都在它上面坍塌,等等.换句话说,对我来说,堆松的声音组织起来很糟糕(例如,最新的东西在上面).这并不是一个堆在大多数计算机上实际工作的方式,但如果你把东西放在堆的开头然后增长它我想它可以工作.