c++中,没有成员变量的类生成的对象,是如何在内存中存储的
我知道,如果一个类有成员变量,那么不论是在栈中,还是堆中,创建对象时,首地址都是成员变量的值。但是如果一个只有成员函数,没有成员变量的类的对象呢?我写的验证小程序里,栈中...
我知道,如果一个类有成员变量,那么不论是在栈中,还是堆中,创建对象时,首地址都是成员变量的值。
但是如果一个只有成员函数,没有成员变量的类的对象呢?
我写的验证小程序里,栈中创建的话,原来存放成员变量的对应的EBP-4处,会是未初始化的CCCCCCCC,如果堆中创建,原来放成员变量处,也是FDFDFDFD。
这是一种什么状况?
另外,我创建一个对象,我知道了其成员变量在内存中的位置,但我应该同时也知道其成员函数在内存中的位置,但大家都说一个对象的大小只是其成员变量的大小之和(加上一个虚函数表指针),那么,成员函数的指针放在哪里?
换而言之,假如我逆向分析,我找到了某个类的某个对象,在堆中创建的位置,我想找这个对象的方法,我该如何找? 展开
但是如果一个只有成员函数,没有成员变量的类的对象呢?
我写的验证小程序里,栈中创建的话,原来存放成员变量的对应的EBP-4处,会是未初始化的CCCCCCCC,如果堆中创建,原来放成员变量处,也是FDFDFDFD。
这是一种什么状况?
另外,我创建一个对象,我知道了其成员变量在内存中的位置,但我应该同时也知道其成员函数在内存中的位置,但大家都说一个对象的大小只是其成员变量的大小之和(加上一个虚函数表指针),那么,成员函数的指针放在哪里?
换而言之,假如我逆向分析,我找到了某个类的某个对象,在堆中创建的位置,我想找这个对象的方法,我该如何找? 展开
3个回答
展开全部
没有非静态成员的类的对象至少占一个1个字节,原因就是为了防止其他对象和这个类的对象拥有同样的起始地址(标识符唯一性),有一些特殊情况对象会占0字节。
更多追问追答
追问
这我知道,我问的是如何通过这个对象在内存中的地址,找到这个对象的方法的地址。
这我知道,我问的是如何通过这个对象在内存中的地址,找到这个对象的方法的地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
强烈推荐楼主看看《深度搜索C++对象模型》。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询