温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

malloc与free怎么在C++中使用

发布时间:2021-06-17 14:31:35 来源:亿速云 阅读:211 作者:Leah 栏目:编程语言

malloc与free怎么在C++中使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

两者相同点

  • 1.都可以申请动态堆内存。

两者不同点

  • 1.new/delete是C++的操作符,malloc/free是C/C++的标准库函数。

  • 2.new申请的可以理解为对象,new时会调用构造函数,返回指向该对象的指针,delete时调用析构函数;malloc申请的只是内存,不是对象。

  • 3.new/delete是保留字,不需要头文件支持;malloc/free需要头文件库函数支持。

注意事项

  • 1.用new申请的内存,必须用delete释放。

  • 2.用new[]申请的内存,必须用delete[]释放。

  • 3.delete释放内存后,指针值不变,良好的风格是释放后指针置为NULL,如,delete p; p = NULL。

  • 4.用malloc申请的内存,必须用free释放。

使用

#include "stdafx.h" #include <stdio.h> #include "stdlib.h" #include <string.h> struct Stu {  char name[32];  int age; }; int main() { /**************************** 基本用法 **********************************/  //申请一个int类型  int *p1 = new int; //直接申请赋值 int* p1 = new int(3);  int *p2 = (int*)malloc(sizeof(int));  //申请一个char类型  char *p3 = new char; //直接申请赋值 char *p3 = new char('c');  char *p4 = (char*)malloc(sizeof(char));  //申请一个int型一维数组  int *p5 = new int[5]; //直接申请赋值 int *p5 = new int[5]{1,2,3,4,5};  int *p6 = (int*)malloc(sizeof(int)*5);  //申请一个char型一维数组  char* p7 = new char[6]; //直接申请赋值 char* p7 = new char[3]{'a', 'v', 'c'};  char* p8 = (char*)malloc(sizeof(char)*6);  //申请一个int型二维数组  int(*p9)[2] = new int[2][2]; //直接申请赋值 int(*p9)[2] = new int[2][2]{ 1,2,3,4 };  int(*p10)[2] = (int(*)[2])malloc(sizeof(int)*2*2);  //申请一个char型二维数组  char(*p11)[2] = new char[2][2];  char(*p12)[2] = (char(*)[2])malloc(sizeof(char)*2*2); /***************************** 申请二级指针内存 **********************************/  //申请二级指针(new,delete)  char** p13 = new char*[2];  p13[0] = "aaaaaaaaaa";  p13[1] = "vvvvvvvvvv";  delete p13;  //申请二级指针(malloc, free)  char** p14 = (char**)malloc(sizeof(char*)*2);  p14[0] = "cccccccc";  p14[1] = "dddddddd";  delete p14; /****************************** 申请结构体内存 *********************************/  //new delete  Stu* pStu1 = new Stu;  Stu* pStu2 = new Stu{"wpf", 10};  Stu* pStu3 = new Stu[1024];  delete pStu1;  delete pStu2;  delete[] pStu3;  //malloc free  Stu* pStu4 = (Stu*)malloc(sizeof(Stu));  memset(pStu4, 0, sizeof(Stu));  free(pStu4);  getchar(); }

看完上述内容,你们掌握malloc与free怎么在C++中使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI