C++入门之_malloc和new

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

堆内存空间是程序运行时(而非编译时)所动态申请的内存空间;
c程序中申请堆内存空间,一般用malloc+free,他们是函数;
c++程序中申请堆内存空间,一般用new+delete,他们是运算符;

一、malloc 和 free

malloc 函数原型: void *malloc(size_t size);
该函数从堆内存中申请一块size大小的内存,将指向该内存的地址返回。
在这里插入图片描述
free函数原型: void free(void *);
函数free返回由malloc()函数分配的堆内存。free()参数是先前调用malloc()函数时返回的地址;
在这里插入图片描述

二、new 和 delete

new和delete是c++专有的操作符,不用头文件声明。
new 类型[(初值)] / new 类型[(unsigned 表达式)]
在这里插入图片描述
delete 指针变量名
在这里插入图片描述

三、相关代码

//#define code_malloc 
#define code_new
int main()
{
    int size;
    int* data;
    cout << "请输入一个数: \n";
    cin >> size;
#ifdef code_malloc
    if ((data = (int *)malloc(size*sizeof(int))) == NULL )    {
        cout << "allocate memory dailed!\n";
        exit(1);  
    }
#endif  
#ifdef code_new
    if ((data = new int[size]) == NULL)    {       
        cout << "allocate memory dailed!\n";
        exit(1);
    }
#endif 
    for (int count = 0; count<size; count++)    {
        data[count] = count * 3;
    }
    for (int count =0; count<size; count++)    {       
        printf("\ndata_ %d ", data[count]);
    }  
#ifdef code_malloc
    free(data);
    data = NULL;
#endif
#ifdef code_new

    delete[]data;  //释放内存
    data = NULL;
#endif   
}

总结

  1. c++中要使用new 和 delete;
  2. 用完一定要释放;
  3. int *p = new int[10];
    delete p; //只能释放第一个,后面9个都无法释放,产生运行错误(内存泄漏);
    delete []p; 才是正确的释放方式;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值