【c/c++】内存分配大小
2020-11-16 02:26
标签:com http class blog style code div img java size javascript 测试平台:linux 32位系统 用sizeof()运算符计算分配空间大小。单位:字节 1. 数组名与变量名的区别 结果 分析 q是数组名,申请内存是编译器记住了,但是赋值给mq后,mq和p一样是一个普通的指针了,大小为4. 总之:c/c++没有办法知道指针所指的内存容量,除非在申请时记住它。 2. 类的内存分配 2.1 空类 结果 分析 所谓类的实例化就是在内存中分配一块地址(空类同样可以被实例化),每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址.因为如果空类不隐含加一个字节的话,则空类无所谓实例化了(因为类的实例化就是在内存中分配一块地址。 2.2 类只有成员变量 结果 解释 这个4是int类型类的成员变量所占字节数 2.2 类含有成员函数 结果 分析 这个4是int类型类的成员变量所占字节数。即成员函数没有占空间。原因是这样的:成员函数不属于类(或类的对象),所有的成员函数和全局函数都在代码段,在调用成员函数时,会隐式的船歌this指针过去调用。 3.3 类中含有静态成员 结果 分析 这个4仍然是int类型类的成员变量所占字节数。static变量存放于静态区,并不和普通成员变量(存于栈)放在一起。 3.4 类中含有virtural函数 结果 分析 virtual 会增加4个字节大小的空间。原因:增加一个virtual ,会增加一个虚函数表指针(即使有多个虚函数,也仅有一个虚函数表),例证 结果 3.5 子类空间分配 例子1 结果 例子2 结果 分析 4 + 4 + 4(虚函数表指针) 【c/c++】内存分配大小,搜素材,soscw.com 【c/c++】内存分配大小 标签:com http class blog style code div img java size javascript 原文地址:http://www.cnblogs.com/kaituorensheng/p/3694587.htmlint main()
{
char q[] = "hello";
cout "q:" sizeof(q) endl;
char *mq = q;
cout "mq:" sizeof(mq) endl;
const char *p = "hello";
cout "p:" sizeof(p) endl;
}
q:6
mq:4
p:4
#include
1
#include
4
#include
4
#include
4
#include
8
#include
8
#include
8
#include
下一篇:css3渐变色