c++内存管理

内存管理

c++中创建用new和delete

New和delete要相互匹配可以减少错误。

New对delete;

New[]对delete;

#include<iostream>

using namespace std;

int main(){

int *p1=new int;

*p1=3;

cout<<*p1<<endl;

int *p2=new int[2]{1,2};

cout<<p2[0]<<" "<<p2[1]<<endl;

delete p1;

delete[]p2;

return 0;

}

new会调用默认构造和析构。

#include<iostream>

using namespace std;

struct A{

A(int a=0,int b=0)

:_a(a),_b(b)

{

cout<<"init "<<a<<" "<<b<<endl;

}

~A(){

cout<<"~A()"<<endl;

}

int _a,_b;

};

捕获异常

int main(){

try{

A *p1=new A[1024*1024*1024*10];

delete p1;

}catch(const exception&e){

cout<<e.what()<<endl;

}

return 0;

}

对比c语言的malloc和free;

New会初始化,

Delete会调用析构。

定位new;

创建指针p2指向一个A类大小的空间。

A*p2=(A*) operator new(sizeof(A));

不会初始化

New(p2)A(1);

调用构造函数初始化。

p2->~A()析构。

Operator delete (p2);

释放空间;

一般直接使用new,delete。

相关推荐
样例过了就是过了18 小时前
LeetCode热题100 最小路径和
c++·算法·leetcode·动态规划
xyq202418 小时前
C++ 变量作用域
开发语言
SKY -dada18 小时前
Understand 使用教程
开发语言·c#·流程图·软件构建·敏捷流程·代码复审·源代码管理
Aaron158818 小时前
RFSOC+VU13P+GPU 在6G互联网中的技术应用
大数据·人工智能·算法·fpga开发·硬件工程·信息与通信·信号处理
xxjj998a18 小时前
Laravel3.x:奠定现代PHP框架的重要里程碑
android·开发语言·php
迷途之人不知返18 小时前
Stack & Queue
c++·算法
(Charon)18 小时前
【C++/Qt】Qt 实现 MQTT 测试工具:连接 Broker、订阅主题与发布消息
开发语言·c++·qt
Ulyanov18 小时前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》:动态数据仪表盘与 NumPy 可视化 —— 从标量到向量的数据驱动进化
开发语言·python·qt·架构·numpy
春蕾夏荷_72829772518 小时前
1、c++ acl udp服务器客户端简单实例-服务器端(1)
服务器·c++·udp
没文化的阿浩18 小时前
【数据结构】排序(2)——直接选择排序、堆排序
数据结构·算法·排序算法