社区
C语言
帖子详情
指针和内存的问题
ksyou
2003-04-04 10:22:32
在头文件中定义了结构,
strcut _ip{
.......
}iphdr;
strcut _msg{
iphdr *myiphdr;
.....
.....
}msg;
然后使用了该结构的指针:
msg *hmsg;
我在程序中使用 hmsg->myiphdr->(iphdr结构元素)
当程序运行一段时间后,就会出现myiphdr里面的元素不能读出的错误!
请问:如何解决?定给高分!
...全文
32
22
打赏
收藏
指针和内存的问题
在头文件中定义了结构, strcut _ip{ ....... }iphdr; strcut _msg{ iphdr *myiphdr; ..... ..... }msg; 然后使用了该结构的指针: msg *hmsg; 我在程序中使用 hmsg->myiphdr->(iphdr结构元素) 当程序运行一段时间后,就会出现myiphdr里面的元素不能读出的错误! 请问:如何解决?定给高分!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
allen_zhaozhencn
2003-04-04
打赏
举报
回复
仔细检查以下几个方面:
1、内存空间已经分配
2、内存用完之后释放 , 并及时将指针值改为NULL, 杜绝野指针。
3、及时回收空间。
allen_zhaozhencn
2003-04-04
打赏
举报
回复
你把你的代码贴上来。
maurice1983
2003-04-04
打赏
举报
回复
hmsg.myiphdr->(iphdr结构元素)
liem
2003-04-04
打赏
举报
回复
检查一下_ip里是否还有指针。通常对每一个指针都要有确定的指向,暂时不用可以指向NULL
否则根据lulu的,可以编译,执行
ksyou
2003-04-04
打赏
举报
回复
我的代码太多了,不好贴啊
prettynacl
2003-04-04
打赏
举报
回复
一样的问题?
明明可以编译,执行。
要不你把你的代码贴上来。
ksyou
2003-04-04
打赏
举报
回复
还是一样的问题
prettynacl
2003-04-04
打赏
举报
回复
分配了也没有用,还是一样的错误?
是怎么样分配的?
是这样吗:
先要加上:typedef:
typedef strcut _ip{
.......
}iphdr;
typedef strcut _msg{
iphdr *myiphdr;
.....
.....
}msg;
msg *hmsg;
hmsg = (msg *) malloc(sizeof( msg));
hmsg->myiphdr = (iphdr *) malloc(sizeof(iphdr ));
然后再使用应该没问题了。
zanglan
2003-04-04
打赏
举报
回复
为hmsg分配内存后,myiphdr还要再分配内存,除非你吧msg定义改成
strcut _msg{
iphdr myiphdr;
.....
.....
}msg;
tinytot
2003-04-04
打赏
举报
回复
iphdr *myiphdr;是hmsg的一个元素,我给hmsg分配了内存,应该不需要再为myiphdr分配内存了吧?
------------------------------------------
myiphdr只是一个指针变量, 如果它没有指向一个分配的内存块, 那你是不能访问它的内容的.
woxihuanbohe
2003-04-04
打赏
举报
回复
strcut _ip{//拼写有误 下同 struct
.......
}iphdr;
strcut _msg{//这里好象要用typedef吧?如果你讨厌写_msg;
iphdr *myiphdr;//iphdr是个变量,不是自定义类型!下msg同
.....
.....
}msg;
然后使用了该结构的指针:
msg *hmsg;//msg不是类型,是个变量,可以用一个变量声明另外一个变量?
我在程序中使用 hmsg->myiphdr->(iphdr结构元素)
当程序运行一段时间后,就会出现myiphdr里面的元素不能读出的错误!
luohualiushui
2003-04-04
打赏
举报
回复
没有道理啊
可能是错误出在其他地方了
Jinglihui
2003-04-04
打赏
举报
回复
代码都没有,谁知道你怎么用的啊?贴出相关代码
ksyou
2003-04-04
打赏
举报
回复
分配了也没有用,还是一样的错误
这个错误困扰我好多天了,一直的不到解决,还请高人多多指导
Jinhao
2003-04-04
打赏
举报
回复
iphdr *myiphdr;没有对象,没有分配空间
ksyou
2003-04-04
打赏
举报
回复
iphdr *myiphdr;是hmsg的一个元素,我给hmsg分配了内存,应该不需要再为myiphdr分配内存了吧?
prettynacl
2003-04-04
打赏
举报
回复
输出hmsg->myiphdr的值。看看与当初分配时是一致的吗?
liushmh
2003-04-04
打赏
举报
回复
iphdr *myiphdr;
没有分配内存
ksyou
2003-04-04
打赏
举报
回复
我在程序中用malloc为hmsg分配了内存并初始化了
Bandry
2003-04-04
打赏
举报
回复
#include <stdio.h>
#include <stdlib.h>
typedef struct _ip {
int i1;
int i2;
int i3;
int i4;
}iphdr;
typedef struct _msg{
iphdr* myiphdr;
char* szmsg;
}msg;
void main()
{
msg* pmsg;
pmsg = (msg *)malloc(sizeof(msg));
pmsg->myiphdr = (iphdr *)malloc(sizeof(iphdr));
pmsg->myiphdr->i1 = 255;
pmsg->myiphdr->i2 = 255;
pmsg->myiphdr->i3 = 255;
pmsg->myiphdr->i4 = 0;
pmsg->szmsg = (char *)malloc(100 * sizeof(char));
pmsg->szmsg = "ip message description";
printf("\nIP: %d.%d.%d.%d\n", pmsg->myiphdr->i1,
pmsg->myiphdr->i2, pmsg->myiphdr->i3, pmsg->myiphdr->i4);
printf("\nIP Description: %s\n\n", pmsg->szmsg);
}
肯定不会有问题。
估计是你其他的地方错误
加载更多回复(2)
结构体
指针
的
内存
空间分配
问题
(C语言)
结构体
指针
的
内存
空间分配
问题
(C语言) 提示:文章结尾有两个代码的合并的精简版! 结构体
指针
在使用前,必须分配
内存
空间给该结构体
指针
,否则会导致数据无法录入;在给结构体
指针
分配
内存
空间时又分两种情况,...
【小白学习C++ 教程】十、C++中
指针
和
内存
分配
//声明变量p和
指针
变量ptr p = 4; //赋值4给变量p ptr = &p; //将p的地址分配给
指针
变量ptr 在
内存
中,这些声明将表示如下: 这是
指针
在
内存
中的内部表示。当地址变量分配给
指针
变量时,它指向的变量如上图所...
结构体、结构体
指针
的
内存
申请
本文着重涉及堆区,主要针对包括结构体和结构体
指针
申请
内存
的过程的分析。 下面是一个结构体和结构体
指针
的
内存
从申请到释放的代码 #define _CRT_SECURE_NO_WARNINGS//vs编译器消除对scanf等函数的安全警告 #...
野
指针
和
内存
泄漏以及
内存
溢出总结
指向一个已删除的对象或未申请访问受限
内存
区域的
指针
。与空
指针
不同,野
指针
无法通过简单地判断是否为 NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野
指针
进行操作很容易造成程序错误。 1.
指针
...
指针
与
内存
关于
指针
与
内存
C语言
69,374
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章