C++创建动态对象后指针删除问题

在c++primer书中看到这么一句“删除(delete)指针后,该指针变成悬垂指针。悬垂指针指向曾经存放对象的内存,但该对象已经不再存在了。...一旦算出了指针所指的对... 在c++ primer书中看到这么一句“删除(delete)指针后,该指针变成悬垂指针。悬垂指针指向曾经存放对象的内存,但该对象已经不再存在了。...一旦算出了指针所指的对象,立即将指针置为0,这样就非常清楚地表明指针不在指向任何对象”。

我的理解是,一旦创建了动态对象(int *p = new int(1024)),并且用指针指向之后,指针就会一直存在,delete指针p只是删除了动态对象,把它占用的动态内存归还给可用空间。所以指针一旦创建就不能删除了吗?
是“一旦删除了指针所指的对象”,打错了,不好意思。
展开
 我来答
bmw511
2013-04-07 · TA获得超过3888个赞
知道大有可为答主
回答量:8161
采纳率:28%
帮助的人:879万
展开全部
在节目中,而不是使用新应用程序的内存空间,不能删除释放。空间
编程中经常使用的堆内存分配,常用的运算符是新的,这个时候一定使用delete函数来释放申请的内存。

需要遵循的原则:new和delete成对。只有一个是不正确的或非标准的字眼,瞬间能够编译,将有安全隐患;

/ /的/>一个malloc空间的方案,由函数free()释放的内存。

例子:

字符* PTR = NULL;

PTR =(CHAR *)malloc的(100 * sizeof(char)的的);

/ / ....

免费(PTR);

PTR = NULL;

2,使用新的应用程序的内存空间,你可以删除释放;(new和delete成对)

例: BR /> * =新的诠释;

/ / ....

删除/ /释放的空间单个int

注:

malloc和free的是,新的C + + / C语言的标准库函数/删除是C + +运算符。它们可以被用来为一个内存动态申请和释放内存。

无法用于内部数据类型的对象,maloc /免费要求,以满足动态对象。自动执行构造函数创建的对象,该对象被自动执行的消亡前的析构函数。是不能够执行的任务的构造函数和析构函数的malloc / free的库函数,而不是运营商,而不是编译器控制的能力范围内征收的malloc / free。
所以C + +语言需要一个完整的动态内存分配和初始化操作符new和delete操作符一个完整的清理和释放内存工作。注意新/ delete是不是库函数。
百度网友b0bba24
2013-03-20 · TA获得超过887个赞
知道小有建树答主
回答量:446
采纳率:0%
帮助的人:473万
展开全部
是的,指针此时还是指向那个删除了的内存空间,但此时不能引用那内存的内容,因为这些内容是不定的,这个指针还可以重新赋值,重新指向另外的内存地址。指针也是变量,有它的作用域,离开作用域,它就被销毁了,那指针就不存在了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
478617
2013-03-20 · TA获得超过875个赞
知道小有建树答主
回答量:725
采纳率:100%
帮助的人:105万
展开全部
你不需要使用时就可以删除动态对象,局部指针变量在整个函数范围内有效,全局指针变量在整个程序内有效,不存在删除的问题
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式