例如找出令人信服的权威C++中间malloc与new
C++ New 权威 找出 中间 malloc 例如
2023-09-14 09:08:08 时间
例如找出令人信服的权威C++中间malloc与new
问题:
非常多人都知道malloc与new都是用来申请空间用的,开辟空间来源于堆中。
可是在C++中却非常少用malloc去申请空间,为什么?
以下小编会以一个非常有说服力的样例来说明。相信大家一看就能明确。
C++程序的格局可分为4个区,注意是“格局”,
1、全局数据区 //当中全局变量,静态变量是属于全局数据区
2、代码区 //全部的类和非成员函数的代码都存放在代码区
3、栈区 //为成员函数执行而分配的局部变量的空间都在栈区
4、堆区 //剩下的那些空间都属于堆区
当中全局变量,静态变量是属于全局数据区。全部的类和非成员函数的代码都存放在代码区。为成员函数执行而分配的局部变量的空间都在栈区。剩下的那些空间都属于堆区。
以下来写个简单的样例:malloc.cpp
#include <iostream> using namespace std; #include <stdlib.h> class Test{ public: Test(){ cout<<"The Class have Constructed"<<endl; } ~Test(){ cout<<"The Class have DisConstructed"<<endl; } }; int main(){ Test *p = (Test*)malloc(sizeof(Test)); free(p); //delete p; return 0; }
编译执行:The Class have DisConstructed
结果是没有调用构造函数。从这个样例能够看出,调用malloc后,malloc仅仅负责给对象指针分配空间。而不去调用构造函数对其初始化。而C++中一个类的对象构造,须要是分配空间。调用构造函数。成员的初始化,或者说对象的一个初始化过程。通过上述样例希望大家在使用C++中尽量不要去使用malloc。而去使用new。
<span style="font-size:14px;">#include <iostream> using namespace std; #include <stdlib.h> class Test{ public: Test(){ cout<<"The Class have Constructed"<<endl; } ~Test(){ cout<<"The Class have DisConstructed"<<endl; } }; int main(){ //Test *p = (Test*)malloc(sizeof(Test)); Test *p = new Test; cout<<"test"<<endl; //free(p); delete p; return 0; }</span>
执行结果例如以下:
假设想更加系统了解C++ new/delete,malloc/free的异同点,能够參看“深入C++ new/delete,malloc/free解析”了解详情。The Class have Constructed
The Class have DisConstructed
版权声明:本文博客原创文章。博客,未经同意,不得转载。
相关文章
- c++中map遍历_怎么遍历map集合
- c++ auto类型_auto C++
- C++stl库_c++库
- android flag_activity_new_task结束,怎样避免使用Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TA
- C++基本概念_c语言 c++区别
- Java 和 C++ 之间的相似之处
- C++ 中用于动态内存的 的 new 和 delete 运算符
- c++复合类型(使用new来分配内存/创建动态数组、delete释放内存)
- C/C++语言常用排序算法
- 十种主流模型C++部署演示
- Win Vscode C++
- 【错误记录】Ubuntu 下 VSCode 编译报错 ( 无法生成和调试,因为活动文件不是 C 或 C++ 源文件。终端进程启动失败(退出代码: -1)。终端将被任务重用,按任意键关闭。 )
- 基于C++ STL案例1-评委打分
- 【C++】哈希
- C++中的类型转换方法详解编程语言
- C++引用类型详解
- C++迭代器(STL迭代器)iterator详解
- C++复合赋值运算符(无师自通)
- MicrosoftVisualC++程序的部署方法
- 基于C++字符串替换函数的使用详解
- C++中Operator类型强制转换成员函数解析
- C++类静态成员与类静态成员函数详解
- C++类中的常量介绍
- C++中队列的建立与操作详细解析
- C++采用openfilename打开文件对话框用法实例