⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_41700.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:41700 发表者:*西北狼* 发表日期:2003-05-28 21:31:18
<br>主题:一个结构变量的问题
<br>内容:结构变量与类对象有很多相似之处,类对象在销毁时由析构函数释放地址空间,结构变量是如何释放地址空间的呢?请各位大虾帮忙!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:罗兹维尔 回复日期:2003-05-28 22:44:27
<br>内容:struct 和 class 在C++中的不同只有<BR><BR>struct的成员默认为public<BR>class的成员默认为private
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:罗兹维尔 回复日期:2003-05-28 22:46:44
<br>内容:说错的话大家一定要指正,我只是听说的
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:天才 回复日期:2003-05-29 09:24:22
<br>内容:我用VC6.0做了一个试验,说明罗兄说的没错。<BR>不过在struct中定义方法还真是不习惯哪^_^<BR>不过话说回来,C#中两者的区别还是不小的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:*西北狼* 回复日期:2003-05-30 22:22:43
<br>内容:罗兄是说结构变量在销毁时也用析构函数吗?(她好像没有析构函数呀……)*_@
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:罗兹维尔 回复日期:2003-05-30 22:36:29
<br>内容:试一下嘛,肯定是可以定义析构函数的
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:dr0 回复日期:2003-05-30 22:51:24
<br>内容:类对象在销毁时由析构函数释放地址空间,结构变量是如何释放地址空间的呢?<BR>// 1, destructor 并不free内存,要释放也是内嵌指针成员指向的内存<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c++ object 的内存释放分为2种,on stack , on heap.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stack 上的是编译器自动释放的,不须担心。heap上的是 delete来释放的。<BR>// 2, struct, class 差异如showboat所说,struct的引入是为了解决和c兼容的问题
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:*西北狼* 回复日期:2003-06-02 21:37:15
<br>内容:是否可以这样理解:结构变量与其他普通变量(如整形变量、字符串变量)一样,具有一定的作用域(即生命期?)在作用域结束时(即在一对“{}”内)由系统自动回收?正如dr0兄所言,结构变量在栈区(stack area),由系统自动回收,类对象在堆区(heap area),由析构函数释放内存。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-06-02 23:39:56
<br>内容:类对象在堆区(heap area),由析构函数释放内存。 <BR>// 我再说一遍,*destructor仅仅是提供一个机会给你做些清理工作*,比如<BR>// 你的instance内有一个形如T *pointer 的指针,要在 destructor{ ::free(pointer) }<BR>// 做类似的工作。真正instance的memory的释放是在destructor调用链[call chain]完成后,<BR>// 由编译器在编译时插入一个free or operator delete来释放instance的堆内存。<BR>// 上面说的是你call delete operator时的情况。<BR>// stack的情况只是移动了stack pointer而已,很简单。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-06-02 23:41:21
<br>内容:你disassembly一下编译器产生的汇编指令就会一目了然
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -