关于C++垃圾处理机制的问题

YellowManDog 2010-09-26 05:36:21
在C++中我 的实体类上有数据(在托管C++上也有(好像)),可是我在C#中通过托管C++调用的时候,数据就没有了?请问是不是C++把它给释放了,如果是,请问如何处理
...全文
261 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2010-09-27
  • 打赏
  • 举报
回复
托管C++问题,请自己转C#版提问。
YellowManDog 2010-09-27
  • 打赏
  • 举报
回复
大牛们,解决问题啊,大哥们,快来
dingshaofengbinbin 2010-09-26
  • 打赏
  • 举报
回复
不懂托管,帮顶!!!!
gules 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yellowmandog 的回复:]
不能去掉。。。。这个类是从前面的类继承下来的。。。
[/Quote]
如果你要继承托管的基类,那么派生类依然托管;
如果要写非托管的类,那么从基类开始就去掉__gc,整个继承体系自行控制内存管理。
YellowManDog 2010-09-26
  • 打赏
  • 举报
回复
真成悲剧了
YellowManDog 2010-09-26
  • 打赏
  • 举报
回复
大哥们,快来帮小弟解决吧,我快哭了,今天就要交项目了,我还有30分,如果能解决,小弟愿意再出一个帖子,把这分给你。快点啊!!!急。。。。
YellowManDog 2010-09-26
  • 打赏
  • 举报
回复
不能去掉。。。。这个类是从前面的类继承下来的。。。
olncy 2010-09-26
  • 打赏
  • 举报
回复
__gc class a
{
Point3d* pt;

public:
a():pt(NULL){}
~a(){if(pt)delete pt;}
};

Point3d 这个类应该不是托管类吧,那么就要自己回收。
gules 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yellowmandog 的回复:]
我现在使用了一个托管C++类,在里面用了指针,但是我不想让系统自动回收,想自己控制回收,应该如何做。
代码形式如下:

__gc class a
{
Point3d* pt;
};

如何控制pt的回收?
[/Quote]
没看见我在6楼的答复?去掉__gc
YellowManDog 2010-09-26
  • 打赏
  • 举报
回复
我现在使用了一个托管C++类,在里面用了指针,但是我不想让系统自动回收,想自己控制回收,应该如何做。
代码形式如下:

__gc class a
{
Point3d* pt;
};

如何控制pt的回收?
YellowManDog 2010-09-26
  • 打赏
  • 举报
回复
大哥,三个项目啊,我得贴出来多少啊,就是:有没有办法不让托管C++进行自动处理垃圾,我来控制回收
  • 打赏
  • 举报
回复
上代码,这样猜不出来
gules 2010-09-26
  • 打赏
  • 举报
回复
好像在定义C++类时有个__gc之类的关键字,去掉即为自己控制,不记得了。
YellowManDog 2010-09-26
  • 打赏
  • 举报
回复
我是说在托管C++中,呵呵,大牛们,准备接分了
fantasy_chl 2010-09-26
  • 打赏
  • 举报
回复
P/Invoke
healer_kx 2010-09-26
  • 打赏
  • 举报
回复
C++是没有gc的。
YellowManDog 2010-09-26
  • 打赏
  • 举报
回复
在托管C++中,我们的指针被自动回收了,怎么样才能让我们自己控制回收呢?
olncy 2010-09-26
  • 打赏
  • 举报
回复
C++要自己处理回收。凡是new出来的对象要用delete释放,否则会内存泄漏.

如:

class A{};

A* pClassA = new A;

delete pClassA;

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧