不经意发现原来char *a[1]-char *a[4]用sizeof计算出来都是4,原来每次都是以4个单位分配的...
解决方案 »
- 求教,CListCtrl的CheckBox占的空间很大怎么改变小一点和改变checkbox的位置??
- 如何设置对话框Border的属性为None
- 如何在在VC++6.0中配置BLAS
- ODBC API 问题,反复推敲没搞明白,郁闷了好久了
- 类QQ和MSN的界面功能源码!急!!!
- 请教Assertion Failed!!!
- help!麻烦大虾指条路!
- 多次点击可执行文件,程序将被启动多次,如何才能使程序只被启动一次?
- 高分请教tapi的问题
- 两个edit派生类中,在edit1中移动光标,实现了所在行换背景色,如何使edit2的光标也下移一行,并所在行变背景色?
- 如何通过资源ID获取资源的文件名
- 界面问题:如何在弹出式对话框上创建视图
指针都是32位的
char *a[1]
和
char *a2[4]
用sizeof计算不可能一样的
先感谢一下。这不对!
sizeof计算的是实际的内存空间。我实际上是把char a[*]放到一个数据结构里用来发送额外数据的,用sizeof计算的是总体的size,发现在依次修改char a[*]时每次以4个增长,还有就是我定义的数据结构没有写数据对齐语句,所以排除自己的原因。且“计算出来的是指针”的说法我认为是不对的,否则对方只能收到指针的值,而不是实际指向的内容。
还有一点就是指针大小不会随指向数据的大小变化。
sizeof(char)?
char szPath[10]={"hhhhhhhh"};
char*p=szPath;
int len=sizeof(p);//得到的是指针的size
int length=sizeof(szPath);//得到的是数组的大小。FYI...
typedef struct _tagData
{
...
char a[1];
...
}DATA;
#pragma pack(pop,1)