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。

相关推荐
程序猿追1 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓1 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播1 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
Navigator_Z2 小时前
LeetCode //C - 1289. Minimum Falling Path Sum II
c语言·算法·leetcode
CCblandy2 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
墨云安全2 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
摇滚侠2 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y3 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
xier_ran3 小时前
【infra之路】AI 编译器学习笔记(六):重拾 C++——lambda 与 MLIR 中的回调
c++·笔记·学习
YangYang9YangYan3 小时前
2027供应链计划校招:数学与应用数学专业如何把预测模型讲成业务决策?
人工智能·sql·算法