定义一个数组大小为10的整型数组,实际需要多少内存空间来存放该数组

时间:2022-08-30 07:55:08
新手求解释:定义一个数组大小为10的整型数组,实际需要多少内存空间来存放该数组 定义一个数组大小为10的整型数组,实际需要多少内存空间来存放该数组

11 个解决方案

#1


用sizeof可以求呢   10个整形,一个整型4个字节 合40byte

#2


楼上正解。
但是如果 char acTemp[5];的话。编译器会为我们分配8字节空间,传说中的内存对其。

#3


引用 2 楼 hmy1987513 的回复:
楼上正解。
但是如果 char acTemp[5];的话。编译器会为我们分配8字节空间,传说中的内存对其。
这...在结构体里才有这种字节对齐之说吧

#4


32位机器上,4 * 10 = 40个字节

#5


你可以使用int a[10];cout<<sizeof(a);来得到你要的答案。随机器的不一样,答案可能不同,正常应该是40。

#6


1. 取决于你的每个元素的静态类型, char-0~255 1byte, short-2bytes, int-一般4bytes, long long-8bytes
2. 取决于你定义变量的位置. 栈上, 直接对齐. 堆上一般32bit对齐, 而且要多个堆头空间(取决于CRT实现)和指针空间(4bytes). 

unsigned char buf[10]; // 栈上, 10bytes
unsigned char* buf = new char[10]; //4bytes指针+10bytes堆空间+对齐空间2bytes+堆的管理结构头空间(取决于CRT实现)

#7


整形分N种:
char
short
long
long long

#8


这样的问题可以自己去写代码试试,int a[10];cout<<sizeof(a);就好了,这样你不仅知道int型的长度为10的数组是多少内存,还可以知道其他类型和其他长度,自己多动手试试

#9


引用 7 楼 zhao4zhong1 的回复:
整形分N种:
char
short
long
long long

到处都看到你,看你的回答都不着边,我们通常所说的整形就是int ok?char short long等虽然很整型在很多情况下可以通用,但是各自有各自的名字,就像我们都是人,但是都有自己的名字,char都叫字符型吧,你是管它叫整型么?

#10


引用 1 楼 xsl510079027 的回复:
用sizeof可以求呢   10个整形,一个整型4个字节 合40byte
++

#11


对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?

不要写连自己也预测不了结果的代码!

#1


用sizeof可以求呢   10个整形,一个整型4个字节 合40byte

#2


楼上正解。
但是如果 char acTemp[5];的话。编译器会为我们分配8字节空间,传说中的内存对其。

#3


引用 2 楼 hmy1987513 的回复:
楼上正解。
但是如果 char acTemp[5];的话。编译器会为我们分配8字节空间,传说中的内存对其。
这...在结构体里才有这种字节对齐之说吧

#4


32位机器上,4 * 10 = 40个字节

#5


你可以使用int a[10];cout<<sizeof(a);来得到你要的答案。随机器的不一样,答案可能不同,正常应该是40。

#6


1. 取决于你的每个元素的静态类型, char-0~255 1byte, short-2bytes, int-一般4bytes, long long-8bytes
2. 取决于你定义变量的位置. 栈上, 直接对齐. 堆上一般32bit对齐, 而且要多个堆头空间(取决于CRT实现)和指针空间(4bytes). 

unsigned char buf[10]; // 栈上, 10bytes
unsigned char* buf = new char[10]; //4bytes指针+10bytes堆空间+对齐空间2bytes+堆的管理结构头空间(取决于CRT实现)

#7


整形分N种:
char
short
long
long long

#8


这样的问题可以自己去写代码试试,int a[10];cout<<sizeof(a);就好了,这样你不仅知道int型的长度为10的数组是多少内存,还可以知道其他类型和其他长度,自己多动手试试

#9


引用 7 楼 zhao4zhong1 的回复:
整形分N种:
char
short
long
long long

到处都看到你,看你的回答都不着边,我们通常所说的整形就是int ok?char short long等虽然很整型在很多情况下可以通用,但是各自有各自的名字,就像我们都是人,但是都有自己的名字,char都叫字符型吧,你是管它叫整型么?

#10


引用 1 楼 xsl510079027 的回复:
用sizeof可以求呢   10个整形,一个整型4个字节 合40byte
++

#11


对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?

不要写连自己也预测不了结果的代码!