C++知识点 内存占用问题

简介: 有一次去面试,谈的挺好的,被人问了一个问题,瞬间暴露自己基础能力弱的弱点了,这里自己记录下,以后慢慢长进。 问题


char test1[]={1,2,3,4}; char test2[]={1,2,3,4,5,6}; char test3[20]={1,2,3,4,5};


这三个语句使用 sizeof ,输出的结果是什么,而我回答的,全部成了指针的长度了,悲剧啊


qDebug()<<"char test1[]={1,2,3,4} size is:"<<sizeof(test1);
qDebug()<<"char test2[]={1,2,3,4,5,6} size is:"<<sizeof(test2);
qDebug()<<"char test3[20]={1,2,3,4,5} size is:"<<sizeof(test3);

输出结果

char test1[]={1,2,3,4} size is: 4
char test2[]={1,2,3,4,5,6} size is: 4
char test3[20]={1,2,3,4,5} size is: 20
    qDebug()<<"char test1[]={1,2,3,4} size is:"<<sizeof(test1);
    qDebug()<<"char test2[]={1,2,3,4,5,6} size is:"<<sizeof(&test2);
    qDebug()<<"char test3[20]={1,2,3,4,5} size is:"<<sizeof(&test3);

输出结果

char test1[]={1,2,3,4} size is: 4
char test2[]={1,2,3,4,5,6} size is: 4
char test3[20]={1,2,3,4,5} size is: 4

注意,这里第一个4 是字符数组的长度

 

后面两个4 是显示了指针占用内存长度

目录
相关文章
|
24天前
|
存储 Java C++
C++ 引用和指针:内存地址、创建方法及应用解析
C++中的引用是现有变量的别名,创建时需用`&`运算符,如`string &meal = food;`。指针存储变量的内存地址,使用`*`创建,如`string* ptr = &food;`。引用必须初始化且不可为空,而指针可初始化为空。引用在函数参数传递和提高效率时有用,指针适用于动态内存分配和复杂数据结构操作。选择使用取决于具体需求。
38 9
|
29天前
|
存储 Linux C语言
【C++初阶】6. C&C++内存管理
【C++初阶】6. C&C++内存管理
34 2
|
2月前
|
存储 程序员 Linux
1024程序员节特辑 | C++入门指南:内存管理(建议收藏!!)
1024程序员节特辑 | C++入门指南:内存管理(建议收藏!!)
41 0
|
2月前
|
存储 监控 算法
【C++ 软件设计思路】高效管理历史任务记录:内存与磁盘结合的策略解析
【C++ 软件设计思路】高效管理历史任务记录:内存与磁盘结合的策略解析
60 0
|
4天前
|
C++
【C++小小知识点】重载、覆盖(重写)、隐藏(重定义)的对比【详解】(23)
【C++小小知识点】重载、覆盖(重写)、隐藏(重定义)的对比【详解】(23)
|
12天前
|
存储 缓存 算法
C++从入门到精通:4.6性能优化——深入理解算法与内存优化
C++从入门到精通:4.6性能优化——深入理解算法与内存优化
|
12天前
|
存储 程序员 编译器
C++从入门到精通:3.4深入理解内存管理机制
C++从入门到精通:3.4深入理解内存管理机制
|
12天前
|
存储 人工智能 程序员
【重学C++】【内存】关于C++内存分区,你可能忽视的那些细节
【重学C++】【内存】关于C++内存分区,你可能忽视的那些细节
44 1
|
12天前
|
C语言 C++
【C++基础(九)】C++内存管理--new一个对象出来
【C++基础(九)】C++内存管理--new一个对象出来
|
14天前
|
存储 编译器 Linux
c++的学习之路:8、内存管理与模板
c++的学习之路:8、内存管理与模板
11 0