社区
C语言
帖子详情
struct 内存分配
skyx
2008-12-10 01:19:03
struct S1 {
...
char a[1000];
char b[1000];
...
} s1;
memset((struct *)&s1, 0, sizeof(s1))会不会存在风险,在不同的操作系统和编译器上?
struct的地址空间是否是连续的?
...全文
108
8
打赏
收藏
struct 内存分配
struct S1 { ... char a[1000]; char b[1000]; ... } s1; memset((struct *)&s1, 0, sizeof(s1))会不会存在风险,在不同的操作系统和编译器上? struct的地址空间是否是连续的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
majun01
2008-12-10
打赏
举报
回复
没风险,大胆用。
rlxtime
2008-12-10
打赏
举报
回复
没有问题的!
不过:memset((struct *)&s1, 0, sizeof(s1)) 这里面(struct *)什么意思? 是不是少了一个S1
fhinalibob
2008-12-10
打赏
举报
回复
可以的,struct空间是连续的!
wdchxzh
2008-12-10
打赏
举报
回复
[Quote=引用 2 楼 lbh2001 的回复:]
memset是C的标准库中的函数,是所有平台编译器必须实现的
struct成员的地址空间是否是连续的,当然要考虑中间可能有对齐引起的间隙填充
[/Quote]
当然要考虑中间可能有对齐引起的间隙填充
struct S1 {
...
char a[1000];
char b[1000];
...
} s1;
由于你的结构中成员类型不全,所以不好判断是不是有需要填充的空隙,当然如果你都是char类型的那么地址是连续的了
feeboby
2008-12-10
打赏
举报
回复
中间有空隙没有关系
sizeof 会保证整个struct 被填成0
xtting_8984313
2008-12-10
打赏
举报
回复
连续的
lbh2001
2008-12-10
打赏
举报
回复
memset是C的标准库中的函数,是所有平台编译器必须实现的
struct成员的地址空间是否是连续的,当然要考虑中间可能有
对齐引起的间隙填充
yellowhwb
2008-12-10
打赏
举报
回复
直接memset就可以了,没问题,struct空间是连续的!
【Linux Kernel-task_
struct
专题】task_
struct
内存分配
本文围绕Linux内核中task_
struct
的
内存分配
展开。介绍了相关函数在多核系统中指定NUMA节点分配内存以提高性能,利用Slab分配器管理内核对象内存。还提及内核初始化时创建“task_
struct
” Slab缓存用于进程创建。此外,讲解了两个新变更宏的使用方法及好处,可用于调试和跟踪
内存分配
问题。
C语言-
struct
结构体变量的
内存分配
本文详细解析了C语言中
struct
的
内存分配
原理,包括不同成员变量的排列顺序如何影响内存占用,以及位域的使用和内存布局。通过具体示例,展示了如何优化结构体设计,以节省空间和提高代码可读性。
Union和
Struct
的
内存分配
本文主要介绍嵌入式系统中Little - endian和Big - endian模式下操作数的存放方式,给出判断处理器大小端模式的两种方法,其中一种涉及Union的
内存分配
模式。还详细说明了Union和
Struct
的
内存分配
方式,Union按内部变量最大值及整数倍对齐,
Struct
按各数据内存加和分配。
C++
struct
内存分配
大小
本文详细介绍了C++中
struct
的数据类型大小、
内存分配
原则及编译器对齐策略。通过实例展示了不同字段排列顺序如何影响
struct
的整体大小。
C --
struct
union
内存分配
本文详细介绍了Little-endian和Big-endian两种字节序模式,并提供了判断方法。此外,还深入探讨了Union和
Struct
的
内存分配
机制,包括内存对齐原则。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章