弱弱的问题再次惊现!

AtlasHR 2009-05-19 04:31:44
1.大家都知道c++有栈内存,堆内存,全局区,常量区,自由存贮区(对吧?)。一个类的非虚成员函数是存在代码区的(代码段....),那么类的数据成员是存在以上五个数据区的哪啊?还有有虚函数的类的虚表存在哪?
比如:
class A
{
private:
int m_i;//这个数据存哪了?
public:
virtual int get(){return m_i;}//类里有个虚指针指向虚表,那个虚表存在哪?不在sizeof(A)中。。。
};
2.堆内存是和进程相关的吧,一定在这个进程4G的虚拟地址某段吧?那么怎么会出现内存泄漏?一个进程退出了,它的虚拟地址空间不也就没了,那么堆不就没了,怎么会有内存泄漏?
3.exe是文件分为:代码段,数据段吧?
哎....弱死了问的,都是基础不扎实.....
...全文
125 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
AtlasHR 2009-05-20
  • 打赏
  • 举报
回复
那这个虚表存放在哪?因为虚表不算在sizeof里啊....
doudouHuY 2009-05-19
  • 打赏
  • 举报
回复
1、成员是存在对象中,和类没关系。对象可能驻留在堆还是栈或者全局数据区等。如果类有虚函数,那么存在虚表,不过
在对象中保存着指向虚表的指针,而不是虚表。
2、进程退出会释放所有分配的资源,所以进程退出了就不再存在什么资源泄漏了
3、exe是分为代码段、数据段(初始化 未初始化)等。
fanchangyong 2009-05-19
  • 打赏
  • 举报
回复
1.2楼正解
2.内存泄漏,是说的你自己的程序执行期间申请了内存而不释放,要想释放只能关闭程序,再指望着操作系统来释放.
3.不太知道了
huliang66 2009-05-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhihuizhilv 的回复:]
比如,类对象可能在栈中,也可能在堆中(new出来的),也可能在全局区。
个人感觉是这样的。希望高手给出精确答案。
[/Quote]
我也只有任务,类和int等类型都一样,看你怎么定义变量了。
m_tornado 2009-05-19
  • 打赏
  • 举报
回复
1.确实不在size(A)中,size(virtual class) = 4 记录的是一个地址而已。你可以试试~
2.程序退出了,操作体统确实会自动回收内存,如果你的程序运行一次,就几秒钟,一次性的吧,呵呵:)现在的不管你怎么new似乎都挂不了,不知道是不是虚拟内存的关系,还是操作体统会在你new的时候判断情况....好习惯要养成
3.代码段数据段?汇编写多了吧,.data,.code,也不明了,操作系统里在原来不能动态分配内存的时候,是分段过,不知道你记不记得内存分页管理,还有分段管理就是这个有关,现在的~不明白了~
用户 昵称 2009-05-19
  • 打赏
  • 举报
回复
2)你的程序在退出之前致使的内存泄露是不会自动释放的。
zhihuizhilv 2009-05-19
  • 打赏
  • 举报
回复
比如,类对象可能在栈中,也可能在堆中(new出来的),也可能在全局区。
个人感觉是这样的。希望高手给出精确答案。
zhihuizhilv 2009-05-19
  • 打赏
  • 举报
回复
普通成员变量存放的位置肯定是在该类的对象内,对象的位置不固定。
goodname 2009-05-19
  • 打赏
  • 举报
回复
2.堆内存是和进程相关的吧,一定在这个进程4G的虚拟地址某段吧?<---我认为是的。
内存泄露是指的你自己的进程不断的申请而没有释放,就叫做内存泄露,泄漏的多了4g就不够用了,进程就完蛋了。
一个进程退出了,所有的内存释放了,就没有内存泄露这一说了。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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