MSVC C++对象内存分配方式学习
来源:互联网 发布:一个域名对应多个网站 编辑:程序博客网 时间:2024/05/01 02:39
C++由于多继承、虚拟继承、虚函数等概念,导致对象的内存分配方式比较复杂。因此C++的对象内存分配也成为C++面试中经常被问到的一个知识点。
已经有很多篇文章讨论过C++的内存对象分配,比如:
1. http://blog.sina.com.cn/s/blog_4a286b4e010125rk.html,这篇文章里提到的要点是GCC和VC的编译器在处理虚集成时的机制是不一样的,GCC始终共享虚表指针vfptr(指向虚函数表),而VC只有在非虚继承时才共享vfptr。
2. http://www.cnblogs.com/jerry19880126/p/3616999,这篇文章详细的介绍了各种情况下VC对对象内存的分配。
这里总结一下MSVC对象内存的分配:
1. 若祖先没有vfptr,当前类有vfptr,则vfptr放在最前方,其次是各个祖先的成员,然后是自己的成员,最后是虚继承的类的成员。
2. 若祖先有多个,有的祖先有vfptr,有的祖先没有vfptr,则有vfptr的祖先成员放在最前方,其次是其他祖先的成员,然后是自己的成员,最后是虚继承的类的成员。
3. 若使用虚继承,则vfptr不会被共享,若当前类override虚父类的函数,则更新虚父类的虚函数表;若当前类定义新的virtual函数,则为当前类新建一个虚函数表。
0 0
- MSVC C++对象内存分配方式学习
- C的内存分配释放方式学习
- C内存分配方式
- C 内存分配方式
- C/C++内存分配方式
- C语言内存分配方式
- C语言内存分配方式
- C/C++内存分配方式 .
- C内存分配方式有三种:
- c/c++内存分配方式
- C语言内存分配方式
- c语言内存分配方式
- C/C++内存分配方式
- c/c++内存分配方式
- c/c++内存分配方式
- C语言内存分配方式
- C/C++内存分配方式
- C内存分配方式与C++内存分配方式
- C++上机实验2——正整数类
- Dom4j解析xml文件-递归遍历所有节点和属性
- 信号
- 【BZOJ4300】绝世好题【DP】【LIS】
- nyoj308(最长公共子串)
- MSVC C++对象内存分配方式学习
- tomcat三种启动指定项目的方式
- 从无到有系列之zookeeper-安装部署01
- 深入分析java线程中的volatile
- linux下安装php环境
- hibernate持久化对象状态
- AJAX请求和响应
- 算法(1)整数划分问题之递归解决
- VJ【规律题】