动态分配的标准写法(new, delete; malloc, free)

来源:互联网 发布:江苏悠迅网络正规吗 编辑:程序博客网 时间:2024/05/16 06:32

1、可能有的人涉及到动态分配只用到下面的这句:

#include <iostream>using namespace std;int main(void){int *p;p = new int(1);//1cout << *p << endl;int *q;q = (int *)malloc(sizeof(int));*q = 1;cout << *q << endl;return 0;}

漏洞百出,不想多说。

(补充一句,上面用的是new的plain new用法)


2、自己总结了一下动态分配的写法(当然还有其他写法),以后就这么写了:

#include <iostream>using namespace std;int main(void){int *p = NULL;p = new(nothrow) int(1);//1if (p == NULL) {//2cerr << "Allocate failed!" << endl;exit(OVERFLOW);}cout << *p << endl;delete p;//3p = NULL;//4/*----------------------------------------------------*/int *q = NULL;q = (int *)malloc(sizeof(int));//1if (q == NULL) {//2cerr << "Allocate failed!" << endl;exit(OVERFLOW);}*q = 1;cout << *q << endl;free(q);//3q = NULL;//4return 0;}

 扩展阅读:林锐

http://blog.sina.com.cn/s/blog_446b43c10100d7ci.html

 

2012/8/10

p= new (nothrow) int[i];if (p == 0)    cout << "Error: memory could not be allocated";

http://www.cplusplus.com/doc/tutorial/dynamic/

 


 

原创粉丝点击