字符数组强制转化为结构体

markman101 markman101 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

数据类型:
struct TalkFrame
{
char cFlag[16];
unsigned __int32 iCom;
unsigned __int32 iLen;
};


char buffer[32];
memset(buffer,0,32);
struct TalkFrame *frame;
frame = (struct TalkFrame *)buffer;
sprintf(frame->cFlag,"TalkFrame");

frame->iLen = 0;
frame->iCom = TC_NORMAL_TALK;
考虑字节对齐后 TalkFrame 的大小是 32*3=96
char buffer[32];的大小是32
那么frame = (struct TalkFrame *)buffer;

frame指向的是的内存空间是32位的
(buffer的内存空间小于 frame 需要的内存空间 )
如果指向
frame->iLen = 0;
frame->iCom = TC_NORMAL_TALK;
这样不就越界了(超出buffer指向的内存空间)吗?

...全文

相关推荐

评论 10
收藏 已收藏
分享
返回顶部
markman101
网络编程 18,356 成员 64,161 内容