c++笔记(class12.2)动态内存分配

目录

 malloc​编辑

 calloc​编辑

 realloc

 free

 知识点:


 

 malloc

 calloc

 

 realloc

在有分配的内存上再分配更大的内存空间 

 有两个分配方案:

①如果原有内存相邻的后面有未分配的内存,并足够用来分配,那么就按照地址顺序往后排

②如果原有内存相邻的后面没有未分配的内存,那么操作系统会向后面寻找可以足以分配空间的内存,并且将原有内存内的数据“剪切”到后面新分配的内存里面


    int* ptr = (int*)malloc(4 * sizeof(int));
    if (ptr == nullptr)
    {
        std::cout << "分配失败" << std::endl;
    }
    std::cout << sizeof(ptr) << std::endl;

    ptr[0] = 9999;
    ptr[1] = 12;
    ptr[2] = 13;

    ptr = (int*)realloc(ptr, 8 * sizeof(int));
    if (ptr == nullptr)
    {
        std::cout << "分配失败" << std::endl;
    }
    for (int x = 0; x < 8; x++)
    {
        std::cout << ptr[x] << std::endl;
    }

 

 free

 知识点:

 alloc,和new的内存区域在堆区,分别使用free和delete释放

int的普通变量在栈上,系统会自动释放,无需手动释放

    free(ptr);
    ptr = 0;//free然后清零,是个好习惯 

c++的内存分配,new

 

 知识点二:

     delete ptrD;//对应new int的释放内存方式
    delete  []ptrD;//对应new int[10]的释放内存方式

堆:内存不是连续的,如果不释放

栈:内存是连续的

(8条消息) 面试基本知识 堆和栈_pkuxuan的博客-CSDN博客_堆区一般由程序员分配释放 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值