C++中内存的分配

C++中内存的分配,第1张

概述 有一个结构A下面是构造A的内存空间方法:1)A* a = new A; 2)A* a = (A*)malloc(2*sizeof(A));  3)A* a = new A; a = (A*)malloc(2*sizeof(A));4)A a;这四者的内存分配是否如下:1)在堆里分配一个sizeof(A)大小的内存空间,a指向该内存空间首址。  

有一个结构A
下面是构造A的内存空间方法:
1)A* a = new A;

2)A* a = (A*)malloc(2*sizeof(A));  

3)A* a = new A; a = (A*)malloc(2*sizeof(A));

4)A a;

这四者的内存分配是否如下:
1)在堆里分配一个sizeof(A)大小的内存空间,a指向该内存空间首址。

2)在堆里分配一个2*sizeof(A)大小的内存空间,a指向该内存空间首址。

3)在堆里分配一个sizeof(A)大小的内存空间,a指向该内存空间首址。随后又在堆里分配了一个2*sizeof(A)大小的内存空间,并修改了a指针指向该内存空间首址。这样由前一步new出来的内存空间就没有指针指向,也就不能通过delete a来释放其占用的内存空间了,这造成了内存泄漏。

4)在栈里分配了sizeof(A)的内存空间,该内存空间在a超出了其作用域后,由系统自动回收。

通过A *a = new A 与 A *a = (A*)malloc(sizeof(A))分配的内存动作是相似的?同时在堆里动态分配了sizeof(A)大小的内存空间。

A a1[20]; A *a2 = a1;的结果是否和A* a3 = (A*)malloc(20*sizeof(A))的结果相同?起一个的内存分配应该

总结

以上是内存溢出为你收集整理的C++中内存的分配全部内容,希望文章能够帮你解决C++中内存的分配所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1156700.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存