注册 登录
编程论坛 C++教室

我不太理解new 和 delete

行空天马 发布于 2006-05-31 09:18, 1876 次点击

我不太理解new 和 delete,这两个东西做了些什么?是怎么做的?

能不能举个例子说明一下?先谢过。

12 回复
#2
guang2006-05-31 09:31
new是申请存储空间,delete是释放所申请的空间
如:int *p;
p=new int;
delete p;
#3
行空天马2006-05-31 11:21
以下是引用guang在2006-5-31 9:31:00的发言:
new是申请存储空间,delete是释放所申请的空间
如:int *p;
p=new int;
delete p;

谢谢楼上回复。

int *p //定义了一个指向int型的指针

p=new int;//申请了一块存储空间,用来存int变量,并把它的地址赋给P。这块空间是四个字节(或两个字节)吗?使用方法和int abc;中变量abc的一样吗?

delete p;//删除了指针P所指向的存储空间

哪位大侠帮忙回答下上面两个问题?先谢过。

#4
wfpb2006-05-31 11:39

p=new int;//申请了一块存储空间,用来存int变量,并把它的地址赋给P。这块空间是四个字节(或两个字节)吗?使用方法和int abc;中变量abc的一样吗?
:::不完全一样,书上会说的很明白,因为你要遇到的时候才会理解
delete p;//删除了指针P所指向的存储空间
:::对!

#5
行空天马2006-05-31 13:26
int *p;
p=new int;
delete p;

用这种方法和用下面方法的效果是一样的吗?

int *p,abc;
p=&abc;

用new、delete有哪些好处呢?
#6
ooooo2006-05-31 13:36
主要区别是new 申请的变量有静态存储属性
通常 不要使用new关键字
因为可能导致内存泄露问题
#7
行空天马2006-05-31 14:05
明白了,感谢所有回帖的弟兄!!!
#8
aogun2006-05-31 14:20
以下是引用ooooo在2006-5-31 13:36:00的发言:
主要区别是new 申请的变量有静态存储属性
通常 不要使用new关键字
因为可能导致内存泄露问题

没有这种说法

#9
行空天马2006-05-31 14:25
谁对?

晕ing.............

int *p;
p=new int;
delete p;

用这种方法和用下面方法的效果是一样的吗?

int *p,abc;
p=&abc;

用new、delete有哪些好处呢?
#10
aogun2006-05-31 14:38

效果不一样,上面一种p所指向的内存在堆中,下面p指向的对象是在栈中
上面一种p指向的内存除非你调用delete p或者程序结束,否则内存对象一直存在
下面那种如果是在函数中定义的话,那么在函数执行完之后,p指向的内存的数据就是未知数据
用哪种方法关键看p的生命周期

#11
ooooo2006-06-01 07:12

aogun是对的
我的意思是对于
int *p;
p=new int;
delete p;
可以用static int abc;代替
如果你用new 就可能由于忘记用delete造成内存泄露

#12
吻舞双全2006-06-01 12:55
用new,申请释放自己说了算
并且是在运行中分配
而其他的都是编译时分配
#13
行空天马2006-06-01 17:01
更明白了,再次感谢所有回帖的弟兄!!!
1