指针 && 动态内存分配
2018-06-17 23:45:29来源:未知 阅读 ()
C++中的动态内存分配机制
c++中使用new和delete来完成在堆上对动态内存的分配和释放。
注.所有指针都应该被初始化
如果指针指向的动态内存被释放或没有指向合法的地址,就应该将指针设置为nullptr,否则内存泄漏。
变量:
double* pvalue {};
pvalue=new double;
*pvalue=9.0;
或
double* pvalue {};
pvalue=new double {9.0};
或合并为一句
double* pvalue {new double{9.0}};
delete pvalue;
数组:
char* pstr {new char[20]};
delete [] pstr;
pstr = nullptr;
可以顺便初始化:int *data {new int [10] {2,3,4}};
多维数组:
double (*pbeans)[4] {};
pbeans= new double [3][4];
或合为一步:double (*pbeans)[4] {new double [3][4]};
delete [] pbeans;
pbeans = nullptr;
C语言中的动态内存分配机制
malloc:
double *ptd;
ptd = (double *)malloc( N * sizeof(double));
free(ptd);
请求N个double类型的空间
calloc:
long *newmem;
newmem =(long *)calloc( N,sizeof(long));
第一个参数是所需内存单元的数量,第二个参数是每个单元以字节计的大小。calloc将块中全部位都置0。
变长数组(VLA)中的动态内存分配:
int n=5;
int m=6;
int ar[n][m]; //变长数组
int (*p1)[6];
int (*p2)[m]; //变长数组
p1=(int (*)[6])malloc( n *6 *sizeof(int));
p2=(int (*)[m])malloc( n *m *sizeof(int)); //变长数组
注:在数组传递作为参数传递过程中必须指定列
如:double (int ar[][6]);
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ this指针 2020-06-03
- Unsolved --> Solved OJ思路题解 2020-05-30
- Building & Debugging chromium on CLion for Linu 2020-05-19
- 洛谷P1164->小A点菜 2020-05-18
- 纯虚函数与基类指针数组的运用 代码参考 2020-04-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash