c++:为什么要使用动态内存分配

实例化一个类有两种方式:

// 假设有一个类A

// 方式一:直接定义法
A a;
// 方式二:动态内存分配法
A * a = new A();

两者有什么差别呢?
实际上,方式二即等价于如下代码:

A * a = new A();

等价于

A * a;
a = new A();

方式一就是直接将a放入栈区(局部变量,大小受限,自动释放);

方式二则是在堆区(动态内存,大小任意,手动释放)分配一块内存,然后用指针a去指向这块内存;

那么我们很容易就知道为什么要使用动态内存分配来实例化一个类。

原因:

1.可以动态的申请空间,以便动态确定对象所需要的内存;
2.便于储存大型对象,通常情况下栈区的大小容不下过于庞大的对象;
3.传递指针比传递整个对象更方便高效;

举几个生动形象的例子解释以上三条原因:
1. 每个人都要吃盐,盐不够了再去买显然比把这辈子要吃的盐一次性买下来要明智;
2. 如果你是卖盐的,储存了很多盐,你只需要建一个仓库把盐放进去,然后自己记住仓库地址即可,而不需要把盐全部放在自己的家中;
3. 如果要去很远的地方谈卖盐的生意,只需要选一些有代表性的信息(地址)给对方就可以了,不需要把整个仓库搬过去给对方看。

猜你喜欢

转载自blog.csdn.net/qq_19923217/article/details/82183346
今日推荐