QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 969|回复: 10

LINUX下C语言动态分配空间

[复制链接]
发表于 2004-12-13 23:14:29 | 显示全部楼层 |阅读模式
我在LINUX下每次用到 #define SIZE 100;
                struct student *p1;   
                p1=(struct student*)malloc(SIZE);
       (程序不是完整的,反正就是用到了malloc)
    在编辑成功后,执行编辑后的文件,就会出错,它说“段错误”我的天那,在WINDOWS下我从没遇到过,我盲了。
   请问谁愿意告诉我知道是怎么回事,谢谢。
发表于 2004-12-13 23:38:42 | 显示全部楼层
windows不出错?这才是怪事哦。你分配100字节给p1正好能装下student 结构吗?
回复

使用道具 举报

发表于 2004-12-14 02:52:57 | 显示全部楼层
内存访问出错,运行命令gdb my_program core,在gdb里运行命令where看看是哪里出错了。
回复

使用道具 举报

发表于 2004-12-14 07:34:46 | 显示全部楼层
#define NUM 100;
struct student *p1;
p1=(struct student*)malloc(NUM*sizeof(struct student));
回复

使用道具 举报

发表于 2004-12-17 12:26:19 | 显示全部楼层
讨论以下
#define SIZE 100;
struct student *p1;
p1=(struct student*)malloc(SIZE);

为什么出错。我认为SIZE不是SIZEOF(struct student )的整数倍
回复

使用道具 举报

发表于 2004-12-17 12:29:27 | 显示全部楼层
SIZE 是 number of bytes
回复

使用道具 举报

发表于 2004-12-17 14:04:09 | 显示全部楼层

Re: LINUX下C语言动态分配空间

[quote:e1746784c3="djlcj"]我在LINUX下每次用到 #define SIZE 100;
                struct student *p1;   
                p1=(struct student*)malloc(SIZE);
       (程序不是完整的,反正就是用到了malloc)
    在编辑成功后,执行编辑后的文件,就会出错,它说“段错误”我的天那,在WINDOWS下我从没遇到过,我盲了。
   请问谁愿意告诉我知道是怎么回事,谢谢。[/quote]

越界了吧,呵呵
回复

使用道具 举报

发表于 2004-12-17 15:01:20 | 显示全部楼层
你能确认sizeof(struct student )就是100吗?
回复

使用道具 举报

发表于 2004-12-17 20:24:07 | 显示全部楼层
给应该多留点发展空间嘛!!!100!!唉!限死空间危险!!
回复

使用道具 举报

发表于 2004-12-18 11:47:54 | 显示全部楼层
哪能这么写程序,要是在一个大工程里,出这样的错很难找。
回复

使用道具 举报

发表于 2004-12-18 18:26:09 | 显示全部楼层
唉!想不开!!????????
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 21:29 , Processed in 0.113248 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表