2 dpgnvr1989 dpgnvr1989 于 2016.03.08 10:32 提问

Delphi结构体的对齐问题

Delphi结构体的对齐问题,Delphi的PChar是几个字节,Short和PChar是不是需要按照4字节对齐?

1个回答

caozhy
caozhy   Ds   Rxr 2016.03.08 11:47
已采纳

PChar是指针,应该是4个字节

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C#通过SOCKET与delphi 的通讯问题(一)之 字节对齐
  本人 做了一个工程.客户端是C#,服务端是DELPHI7.在实施过程中遇到了多种问题,现在就几个重要问题总结一下,希望对大家有所帮助,少走点弯路.(如果有人不以为然,请一笑而过,切勿留下骂口.)一、首先是对于不同环境下数据包转换问题。     1、C#里可以用STRUCT 封装数据。如:[StructLayout(LayoutKind.Sequential)]//注意此处一定要有此
Delphi的字节对齐和简单string结构
procedure TForm1.Button1Click(Sender: TObject); type TTest = record sAccount: string[31]; // 如果不加Packed 30和31是相同的大小 虽然是相同的,如果网络编程,传递后转换,Delphi是识别不出来的,会出现越界问题。 sChrName: string[15]; sUserAddr: str
Delphi中的内存对齐 与 Packed关键字
 以delphi为例:TTest = recordc1: char;i1: Integer;c2: char;c3: Char;end;这个结构如果用sizeof取其占用的内存大小,是多少呢,是1+4+1+1=7么,不是,是4*3 = 12; 这是因为32位编译的时候,默认结构会自动内存对齐(32bit = 4byte)。如果要想让这个结构占用7个字节的话,必须加上packed关键字。如下
结构体对齐问题.
在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间;各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。    例如,下面的结构各成员空间分配情况。   struct tagTest { char x1; short x2; float
C/C++中的结构体对齐问题(内存对齐)
由于程序运行时占用的内存过大,所以想办法给程序瘦身。在调试中发现结构体占用的size竟然和预想的不一样,原来…… 看看下面讲的吧,肯定会不枉此看哦! 1,比如: struct{    short a1;    short a2;    short a3;}A;struct{    long a1;    short a2;}B;sizeof(A)=6, sizeof(B)=8,为什么?注:size
由sizeof求结构体大小时涉及到的数据对齐
本博文转自http://www.cnblogs.com/dolphin0520/    作者:海子 结构体字节对齐       在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各
关于stm32结构体对齐
关于stm32结构体对齐最近使用华大MCU hc32l110系列单片机,该单片机位M0+ 内核,由于该单片机存在4字节对齐问题(后来发现的),定义结构体及变量的地址为4的倍数.比如我定义一个8字节的结构体(8个char型变量),当我从结构体第一个字节复制到8字节的数组的时候,能够正常复制,但当我从第二个字节复制到数组的时候,却从第四个字节复制,但stm32却不存在这种问题,为了解决这种问题需在结构...
C语言结构中的边界对齐问题
没错,今天2月14,单身狗如我情人节也只能苦逼地撸代码了。不知道大家有没有发现一个奇怪的现象,见图~ 结构test里面包含了1个int型变量和2个char型变量,照理说sizeof( struct test )应该等于它们三个相加的结果6才对,为什么会等于8呢? 事实上,结构成员在内存中的存储并不是想当然地一个紧挨着一个排列下来的,由于提高数据读取速度的要求以及
STM32学习笔记10——stm32中结构体字节对齐问题
stm32做串口或网络传输数据时,经常需要用结构体定义帧格式。如果按照keil默认的对齐方式(4字节对齐),经常会出现结构体中补零的问题,造成帧格式错误。所以,在定义结构体类型时,最好把结构体对齐方式改为1字节对齐,防止出错。理论和方法见下面转载的文章。 转载自:https://www.cnblogs.com/King-Gentleman/p/5297355.html #pragma
结构体和联合体的字节对齐问题
为了提速之类的,在结构体和联合体的内存块中,是按照一定的规则安排的 联合体: 联合体的内存不会为了所有成员安排,而是只取最大的成员的所需内存大小,每次只能使用其中一个成员。但是有一个问题: typedef union { char a; int[5] b; double c; } 当然只取最大的int数组的大小20没错,但是double是8字节的,而此时联合体已经按