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 int2{1,2};

cout<<p20<<" "<<p21<<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 A1024\*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。

相关推荐
Sagittarius_A*1 分钟前
后量子密码|前置基础 03|数字签名运行逻辑:签名签发、核验原理与实际业务应用
算法·信息安全·密码学·数字签名·后量子密码
DBA小马哥7 分钟前
向量数据库入门到进阶:Embedding、ANN算法与RAG落地的关键术语
数据库·算法·embedding
大白同学42120 分钟前
初识Qt——创建第一个Qt项目
开发语言·qt
祈禾21 分钟前
计算机组成原理之编译、汇编、链接、解释
开发语言·汇编·笔记·学习
吴声子夜歌28 分钟前
正则指引——Ruby
开发语言·正则表达式·ruby
Luhui Dev41 分钟前
如何在 WorkBuddy 中使用大角几何:从 MCP 接入到 AI 几何作图
人工智能·数学·算法·agent·luhuidev
Smilecoc41 分钟前
决策树(五):决策树回归
算法·决策树·回归
nnerddboy42 分钟前
Rust教程06:ESP32-rust环境搭建
开发语言·后端·rust
nnerddboy1 小时前
Rust教程03:函数,控制流与所有权
开发语言·后端·rust
小龙报1 小时前
【优选算法】1.搜索插入位置 2.x的平方根
java·c语言·数据结构·c++·python·算法·蓝桥杯