www.cnblogs.com/ruiyqinrui

开源、架构、Linux C/C++/python AI BI 运维开发自动化运维。 春风桃李花 秋雨梧桐叶。“力尽不知热 但惜夏日长”。夏不惜,秋不获。@ruiY--秦瑞

python爬虫,C编程,嵌入式开发.hadoop大数据,桉树,onenebula云计算架构.linux运维及驱动开发.

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  2912 随笔 :: 9 文章 :: 51 评论 :: 185万 阅读

1,管理运行阶段内存空间分配

malloc()/new;

int *pn = new int(存储的类型,内存根据此设定相应存储字节的内存)

pn是内存地址(所以 当声明一个变量的指针变量时没初始化,声明后再来初始化则pn 接收的应该是变量在内存中的地址 &VariableName);

*pn是存储在内存的值 用于给所指向内存中的变量赋值;

为一个数据对象(结构,基本类型)获得并指定分配内存格式

typeName pointer_name = new typeName;

指定需要什么样的内存和用来声明合适的指针

 常规变量nights和指针变量值都存储在被称为栈(stack)的内存区域,而new从被称为堆(heap)或自由存储区(free store)的内存区域分配内存;
int b;
//int *pd = &b;
pd = &b;
*pd = 100;
delete 使用完内存后,能够将其归还给内存池,

eg.释放上面new申请的内存区域
delete ps;将释放ps指向的内存,但不会删除指针本身,指针可以再次执行别的内存地址;
配对的使用new/delete,不然很容易发生内存泄露(memory leak),被分配的内存再也无法使用了,神马叫泄露(就好类似你私家车车胎里面的气球,你给它放掉了,除非你再次充气,不然它自己是不能恢复的哈!)
内存一旦泄露严重,程序将由于不断寻找更多内存而终止;

delete不可用于释放常规变量内存;

int * ps = new int;
delete ps;
delete ps;
int jugs = 5;
int * pi = &jugs;
delete pi; // not allowed memory,memoey not allocated by new

记住,请务必记住delete只能用来使用由new申请的内存;

posted on   秦瑞It行程实录  阅读(416)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2013-07-12 cacti快速安装
www.cnblogs.com/ruiyqinrui
点击右上角即可分享
微信分享提示