//delphi
procedure TForm1.Button1Click(Sender: TObject);
type TRecord1=record
a1:byte;
d1:Cardinal;
end;
type TRecord2=packed record
a1:byte;
d1:Cardinal;
end;
begin
showmessage(IntToStr(SizeOf(TRecord1)));//输出值为8
showmessage(IntToStr(SizeOf(TRecord2)));//输出值为5
end;
//vc
typedef struct tagTStruct1
{
unsigned char a1;
unsigned int d1;
}TStruct1,*LStruct1;
void Cdialog1::OnBnClickedOk()
{
int value=0;
char value1[100];
CString value2;
value2="";
itoa(sizeof(TStruct1),value1,10);
value2.Format("struct is %s",value1);
AfxMessageBox(value2); //输出值为8
}
以上代码均调试过了,想请问vc中为什么取出的占用大小也是8啊,这样起不是很占用资源吗?(对比与delphi packed record类型),本人对vc不太了解,也没用过,只是最近需要看些代码,才弄了下,只是本着相互学习的态度,请大家场所语言,分不够我会加的
procedure TForm1.Button1Click(Sender: TObject);
type TRecord1=record
a1:byte;
d1:Cardinal;
end;
type TRecord2=packed record
a1:byte;
d1:Cardinal;
end;
begin
showmessage(IntToStr(SizeOf(TRecord1)));//输出值为8
showmessage(IntToStr(SizeOf(TRecord2)));//输出值为5
end;
//vc
typedef struct tagTStruct1
{
unsigned char a1;
unsigned int d1;
}TStruct1,*LStruct1;
void Cdialog1::OnBnClickedOk()
{
int value=0;
char value1[100];
CString value2;
value2="";
itoa(sizeof(TStruct1),value1,10);
value2.Format("struct is %s",value1);
AfxMessageBox(value2); //输出值为8
}
以上代码均调试过了,想请问vc中为什么取出的占用大小也是8啊,这样起不是很占用资源吗?(对比与delphi packed record类型),本人对vc不太了解,也没用过,只是最近需要看些代码,才弄了下,只是本着相互学习的态度,请大家场所语言,分不够我会加的
解决方案 »
- 请问会员卡系统需要哪些硬件?
- 怎样用Idsmtp,Idmessage来进行邮件群发???
- 紧急求救!没有dbchart控件!!马上给分!!!
- 问一个简单问题
- 如何给自己开发的控件(直接继承TComponent)增加Handle属性???或者是让控件可以接收消息。
- 怎么将combobox1中选择的内容送给memo1?
- 怎样在本机上用delphi中ADO连接internet中的Access数据库???
- [急急急]如何将在DBGrid中显示出来的内容打印出来???
- 批处理图片
- fastreport 每页最后一行没有顶到头就折行到下一页了,如何解决?
- 能不能在PDF控件中实现字符串的搜索,如在文本框里输入'aaaa',然后在pdf中将所有的'aaaa'选中
- 求数据指针停留时间问题,急,在线等待!
在DELPHI里,如果不是紧缩型(packed record)的记录类型,对记录类型的内存管理采用的是叫“字对齐”的模式。也就是说
type TRecord1=record
a1:byte; //A1域占用的字节长度,因“字对齐”管理模式,与D1域占用的内存大小一致;
d1:Cardinal; //D1域占用4字节内存;
end; 在VC中,内存管理模式不太清楚了。呵~~,要查查相关的资料才行。