社区
C语言
帖子详情
指针和内存的问题
ksyou
2003-04-04 10:22:32
在头文件中定义了结构,
strcut _ip{
.......
}iphdr;
strcut _msg{
iphdr *myiphdr;
.....
.....
}msg;
然后使用了该结构的指针:
msg *hmsg;
我在程序中使用 hmsg->myiphdr->(iphdr结构元素)
当程序运行一段时间后,就会出现myiphdr里面的元素不能读出的错误!
请问:如何解决?定给高分!
...全文
46
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++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++中的
内存
管理(关于
指针
,野
指针
,
内存
泄漏,智能
指针
)
野
指针
和
内存
泄漏是错误使用
指针
可能导致的两个
问题
。野
指针
通常是由于
指针
指向的
内存
被释放后,仍然尝试访问该
内存
导致的;而
内存
泄漏则是由于分配的
内存
没有被释放,导致
内存
资源的浪费。智能
指针
是为了解决野
指针
...
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章