社区
C语言
帖子详情
指针和内存的问题
ksyou
2003-04-04 10:22:32
在头文件中定义了结构,
strcut _ip{
.......
}iphdr;
strcut _msg{
iphdr *myiphdr;
.....
.....
}msg;
然后使用了该结构的指针:
msg *hmsg;
我在程序中使用 hmsg->myiphdr->(iphdr结构元素)
当程序运行一段时间后,就会出现myiphdr里面的元素不能读出的错误!
请问:如何解决?定给高分!
...全文
39
22
打赏
收藏
指针和内存的问题
在头文件中定义了结构, strcut _ip{ ....... }iphdr; strcut _msg{ iphdr *myiphdr; ..... ..... }msg; 然后使用了该结构的指针: msg *hmsg; 我在程序中使用 hmsg->myiphdr->(iphdr结构元素) 当程序运行一段时间后,就会出现myiphdr里面的元素不能读出的错误! 请问:如何解决?定给高分!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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++
指针
经典资料大全
- C++11引入了智能
指针
(如`unique_ptr`,`shared_ptr`,`weak_ptr`),自动管理
内存
,避免手动释放带来的
问题
。 8. **
指针
与STL** - 标准模板库(STL)中的容器如`vector`,`list`,`map`等,经常与
指针
结合使用...
C/C++
指针
的13份资料
`,这种多级
指针
常用于动态
内存
分配和函数参数传递。 6. **数组与
指针
**:在C/C++中,数组名实际上就是一个指向数组首元素的
指针
,如`int arr[5]; int *p = arr;`,此时`p`与`arr`等价。 7. **函数
指针
**:函数...
免费下载:C语言难点分析整理.doc
在使用C语言进行编程时,
指针
和
内存
泄漏是开发者经常遇到且需要解决的
问题
。这些
问题
不仅耗费了大量的调试时间,还可能成为软件开发过程中的绊脚石。 #### 导致
内存
破坏的
指针
操作类型 - **非法
指针
访问**:尝试...
关于C++的
指针
和
内存
它们提供了更灵活和精确的
内存
控制能力,但也要求程序员有责任正确地分配和释放
内存
,以避免
内存
泄漏和悬挂
指针
等
问题
。通过
指针
,程序员可以动态地分配和释放
内存
,以及在程序中引用和修改
内存
中的数据。虽然C++...
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章