VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 163|回复: 0

[转载] c语言的动态内存管理

[复制链接]
89_avatar_middle
最佳答案
0 
在线会员 发表于 2020-6-7 15:59:22 | 显示全部楼层 |阅读模式
1.

    malloc:动态开辟指定大小的空间,返回值是void* ,所以要自己指定返回的数据类型
        int *ptr = (int*) malloc (10*sizeof(int));
    calloc:动态开辟指定大小的空间,与malloc不同的是它会进行初始化
        int* ptr = (int*)calloc(10,sizeof(int));
    realloc: 为动态开辟的空间调整大小,如果原空间后有足够大的空间,之间在后面开辟。如果原空间后的空间不够大,它会开辟一块空间,将原来的数据拷贝过来,并释放原来的空间

int *ptr = (int*) malloc (10*sizeof(int));

realloc(ptr,100*sizeof(int));

    free:动态开辟的空间一定要记得释放,否则可能导致内存泄漏(指针丢了,内存还在)

动态开辟的内存都在堆上,堆上的空间由程序员手动开辟,手动释放。



2.c++的动态内存管理:

c++通过new/delete动态管理内存

    new/delete动态管理对象
    new[]/delete[]动态管理对象数组

    new做了俩件事:

    调用operator new分配空间
    调用了构造函数初始化对象

    delete做了俩件事

    调用析构函数权力对象
    调用operator delete释放空间

    new[N]

    调用operator new分配空间
    调用N次构造函数分别初始化每个对象

    delete[N]

    调用N次析构函数清理对象
    调用operator delete释放空间




上一篇:渣渣菜鸟求助
下一篇:有没有会app通迅协议,想写个pc爆粉
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-10-1 23:32

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表