社区
C语言
帖子详情
struct 内存分配
skyx
2008-12-10 12:17:10
struct 内存分配问题
例如:
struct S1 {
...
char a[1000000000000000000];
...
};
memset( S1,0, sizeof(S1))
会不会有问题
在内存不够的时候a还是会存储在S1的地址空间,还是会当做指针,指向另外一个可用空间,
是不是和编译器和操作系统有关系?
...全文
178
8
打赏
收藏
struct 内存分配
struct 内存分配问题 例如: struct S1 { ... char a[1000000000000000000]; ... }; memset( S1,0, sizeof(S1)) 会不会有问题 在内存不够的时候a还是会存储在S1的地址空间,还是会当做指针,指向另外一个可用空间, 是不是和编译器和操作系统有关系?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lbh2001
2008-12-10
打赏
举报
回复
如果编译器和系统允许这么大的数组,是没有问题的
这种用法是个技巧,
将数组用结构封装,借用结构的赋值特性完成数组的赋值
而普通的数组是不能这样的
tdjdyq
2008-12-10
打赏
举报
回复
你可以设置这个数组大小,在编译中.
在内存不够的时候a还是会存储在S1的地址空间,还是会当做指针,指向另外一个可用空间,
不是这样的
tdjdyq
2008-12-10
打赏
举报
回复
编译器一般是回默然一个数组的大小,超过了程序不能运行
yellowhwb
2008-12-10
打赏
举报
回复
1000000000000000000的话当然不行,32位机的整型才2^32大小,超出数组下标,呵呵,只要空间够,就不会有问题
skyx
2008-12-10
打赏
举报
回复
可能举例有些极端
换成1000好了
struct S1 {
...
char a[1000];
char b[1000];
...
} s1;
memset((struct *)&s1, 0, sizeof(s1))会不会存在风险,在不同的操作系统和编译器上?
jackzhhuang
2008-12-10
打赏
举报
回复
你在vs下申请char a[1024 * 1024 * 1024]就无法通过编译,编译器事先检查了。
Claude
2008-12-10
打赏
举报
回复
数组大小的限制应该和进程地址空间4G相关,本身并无限制。
jackzhhuang
2008-12-10
打赏
举报
回复
数组不是你说多大就能有多大的,与编译器有关
字节存储单元及
struct
内存分配
在有限范围内的可计量数值几乎都可以用二进制数码串组合表示,计算机的内存由数以亿万计的比特位存储单元(晶体管)组成。由于一个位只能表示二元数值,所以单独一位的用处不大。通常将许多位组成一组作为一个基本...
C++
struct
内存分配
大小
C++
struct
内存分配
大小 一 原则: 1 所有字段在内存中出现顺序与声明顺序一致 (理论上,译器可以随便放置各个字段) 2 由于性能原因,大多数编译器实际上会将
struct
的各个字段对齐放置在合适的内存边界。具体细节...
【C语言】
struct
结构体内存如何分配
1.结构体
内存分配
是根据结构体成员的类型大小分配的,且结构体分配内存是实例化之后分配的。 对于以上的结构体,
struct
demo的大小是多少呢?有些同学会觉得是13个字节,其实并不是,这里的
struct
demo 的大小是24...
C语言-
struct
结构体变量的
内存分配
struct
内存分配
定义技巧 首先我们定义
struct
变量,笔者习惯定义时,直接输入:
struct
name { }; 再对
struct
内部成员进行定义,防止“;”遗漏,导致程序报错。 先看一段代码 #include<stdio.h> ...
【Linux Kernel-task_
struct
专题】task_
struct
内存分配
这两个宏提供了一种机制,允许在
内存分配
前后执行额外的逻辑,如保存和恢复分配上下文,这对于调试和跟踪
内存分配
问题非常有用。通过使用这些宏,内核开发者可以在不修改分配函数本身的情况下,添加额外的逻辑来处理...
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章