11 个解决方案
#1
用sizeof可以求呢 10个整形,一个整型4个字节 合40byte
#2
楼上正解。
但是如果 char acTemp[5];的话。编译器会为我们分配8字节空间,传说中的内存对其。
但是如果 char acTemp[5];的话。编译器会为我们分配8字节空间,传说中的内存对其。
#3
这...在结构体里才有这种字节对齐之说吧
#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实现)
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
char
short
long
long long
#8
这样的问题可以自己去写代码试试,int a[10];cout<<sizeof(a);就好了,这样你不仅知道int型的长度为10的数组是多少内存,还可以知道其他类型和其他长度,自己多动手试试
#9
到处都看到你,看你的回答都不着边,我们通常所说的整形就是int ok?char short long等虽然很整型在很多情况下可以通用,但是各自有各自的名字,就像我们都是人,但是都有自己的名字,char都叫字符型吧,你是管它叫整型么?
#10
++
#11
对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?
不要写连自己也预测不了结果的代码!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!
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字节空间,传说中的内存对其。
但是如果 char acTemp[5];的话。编译器会为我们分配8字节空间,传说中的内存对其。
#3
这...在结构体里才有这种字节对齐之说吧
#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实现)
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
char
short
long
long long
#8
这样的问题可以自己去写代码试试,int a[10];cout<<sizeof(a);就好了,这样你不仅知道int型的长度为10的数组是多少内存,还可以知道其他类型和其他长度,自己多动手试试
#9
到处都看到你,看你的回答都不着边,我们通常所说的整形就是int ok?char short long等虽然很整型在很多情况下可以通用,但是各自有各自的名字,就像我们都是人,但是都有自己的名字,char都叫字符型吧,你是管它叫整型么?
#10
++
#11
对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?
不要写连自己也预测不了结果的代码!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!
VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?
不要写连自己也预测不了结果的代码!