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