BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #91754同步于 2016/5/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

delete非new出来的指针会发生什么?

flymyheart
2016/5/20镜像同步20 回复
如题。 char *p ="a"; delete p; 在我电脑上是一直运行,不能走到delete的下一步 求解 发自「贵邮」
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
xiaoyifei机器人#1 · 2016/5/20
pointer being freed was not allocated 栈 堆
nuanyangyang机器人#2 · 2016/5/20
未定义行为,什么都可以发生,从什么都不发生到机器冒烟都是允许的。
flymyheart机器人#3 · 2016/5/20
暖神,我在函数内部定义了一个指针,指向了申请的堆内存,而出了这个函数这块内存我还要用很久。而这个函数是一个服务端的接口函数中调用的,客户端调用这个接口后,我不太方便去获取那个指针。。那么我需要怎么去释放申请的空间?还是说用一种方法把那些指针单独再存起来,到时候再释放? ?不知道描述你能不能明白。就是如何去很好的管理内存 【 在 nuanyangyang 的大作中提到: 】 : 未定义行为,什么都可以发生,从什么都不发生到机器冒烟都是允许的。 : 发自「贵邮」
nuanyangyang机器人#4 · 2016/5/21
服务器端?客户端?怎么回事?网络程序? 【 在 flymyheart 的大作中提到: 】 : 暖神,我在函数内部定义了一个指针,指向了申请的堆内存,而出了这个函数这块内存我还要用很久。而这个函数是一个服务端的接口函数中调用的,客户端调用这个接口后,我不太方便去获取那个指针。。那么我需要怎么去释放申请的空间?还是说用一种方法把那些指针单独再存起来,到时候再释放? : ?不知道描述你能不能明白。就是如何去很好的管理内存 : : ...................
flymyheart机器人#5 · 2016/5/21
对,因为项目需要用的gSoap,我现在写的是服务端直接等待客户端的请求,服务端函数内部申请堆内存,而客户端调用接口后,我没法获取申请动态内存的指针,所以找不到合适的机会去释放申请的堆内存 【 在 nuanyangyang 的大作中提到: 】 : 服务器端?客户端?怎么回事?网络程序? : 【 在 flymyheart 的大作中提到: 】 : : 暖神,我在函数内部定义了一个指针,指向了申请的堆内存,而出了这个函数这块内存我还要用很久。而这个函 : ......... 发自「贵邮」
nuanyangyang机器人#6 · 2016/5/21
“服务端函数内部申请堆内存,而客户端调用接口后,我没法获取申请动态内存的指针”这段说不通: 服务器端申请的内存,怎么在客户端获取指针呢? 还是说,服务器在初始化的时候申请内存,而客户端调用的时候,要找到当时申请的内存?
flymyheart机器人#7 · 2016/5/21
不是在客户端获取那个指针,是服务端获取不到 因为现在服务端是这个样子: main主函数里面进行等待接收客户端的请求,调用相应的接口函数. 比如这个接口函数是fun(int a, A &a); 这个A是一个类,里面包含了另外一个类B的指针p,这个指针p是申请的动态内存 a.b = new B(); 而主函数等待请求执行了fun了的话,我是觉得不能在fun中释放b(因为这些内容还要返回给客户端,返回前释放内存会不正确),而执行了fun函数我又没办法获取这个a,所以不能释放申请的b动态内存。 因此很纠结。 不知道暖神懂了没。。先谢暖神的耐心解答 【 在 nuanyangyang 的大作中提到: 】 : “服务端函数内部申请堆内存,而客户端调用接口后,我没法获取申请动态内存的指针”这段说不通: : 服务器端申请的内存,怎么在客户端获取指针呢? : 还是说,服务器在初始化的时候申请内存,而客户端调用的时候,要找到当时申请的内存?
flymyheart机器人#8 · 2016/5/21
fun(int c, A &a);吧,清楚点,c是输入参数,a是输出参数 【 在 nuanyangyang 的大作中提到: 】 : “服务端函数内部申请堆内存,而客户端调用接口后,我没法获取申请动态内存的指针”这段说不通: : 服务器端申请的内存,怎么在客户端获取指针呢? : 还是说,服务器在初始化的时候申请内存,而客户端调用的时候,要找到当时申请的内存?
nuanyangyang机器人#9 · 2016/5/21
【 在 flymyheart 的大作中提到: 】 : 不是在客户端获取那个指针,是服务端获取不到 : 因为现在服务端是这个样子: : main主函数里面进行等待接收客户端的请求,调用相应的接口函数. : ................... 虽然不知道你的A和B分别是什么,但我觉得是时候思考一下对象的生命周期了。 思考: A是什么?它的用途是什么? A的数量?比如服务器整体只有一个A?还是每个客户有一个A?还是每个客户的每个链接都有一个A?还是每次调用Fun都会产生一个A? A在什么时间范围内有效?比如“调用完foo就无效了”?如果不是,那么具体的生存期是从什么时候到什么时候? 同样地,B是什么、意图、数量、有效时间范围(生命周期)?