社区
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的地址空间是否是连续的?
...全文
90
8
打赏
收藏
struct 内存分配
struct S1 { ... char a[1000]; char b[1000]; ... } s1; memset((struct *)&s1, 0, sizeof(s1))会不会存在风险,在不同的操作系统和编译器上? struct的地址空间是否是连续的?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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空间是连续的!
字节存储单元及
struct
内存分配
在有限范围内的可计量数值几乎都可以用二进制数码串组合表示,计算机的内存由数以亿万计的比特位存储单元(晶体管)组成。由于一个位只能表示二元数值,所以单独一位的用处不大。通常将许多位组成一组作为一个基本...
C++
struct
内存分配
大小
C++
struct
内存分配
大小 一 原则: 1 所有字段在内存中出现顺序与声明顺序一致 (理论上,译器可以随便放置各个字段) 2 由于性能原因,大多数编译器实际上会将
struct
的各个字段对齐放置在合适的内存边界。具体细节...
【C语言】
struct
结构体内存如何分配
1.结构体
内存分配
是根据结构体成员的类型大小分配的,且结构体分配内存是实例化之后分配的。 对于以上的结构体,
struct
demo的大小是多少呢?有些同学会觉得是13个字节,其实并不是,这里的
struct
demo 的大小是24...
【Linux Kernel-task_
struct
专题】task_
struct
内存分配
这两个宏提供了一种机制,允许在
内存分配
前后执行额外的逻辑,如保存和恢复分配上下文,这对于调试和跟踪
内存分配
问题非常有用。通过使用这些宏,内核开发者可以在不修改分配函数本身的情况下,添加额外的逻辑来处理...
C语言-
struct
结构体变量的
内存分配
struct
内存分配
定义技巧 首先我们定义
struct
变量,笔者习惯定义时,直接输入:
struct
name { }; 再对
struct
内部成员进行定义,防止“;”遗漏,导致程序报错。 先看一段代码 #include<stdio.h> ...
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章