社区
C语言
帖子详情
指针和内存的问题
ksyou
2003-04-04 10:22:32
在头文件中定义了结构,
strcut _ip{
.......
}iphdr;
strcut _msg{
iphdr *myiphdr;
.....
.....
}msg;
然后使用了该结构的指针:
msg *hmsg;
我在程序中使用 hmsg->myiphdr->(iphdr结构元素)
当程序运行一段时间后,就会出现myiphdr里面的元素不能读出的错误!
请问:如何解决?定给高分!
...全文
90
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语言中的
指针
和
内存
泄漏 导致
内存
破坏的
指针
操作类型
指针
赋值 复制
内存
区域
内存
覆盖 使用动态
内存
必须考虑的检查点 未初始化的
内存
使用malloc函数申请的
内存
空间,没有初始化就直接通过
指针
访问,这时候
内存
空间中可能有的垃圾值会被使用,程序动向不可预测。因此应该结合memset使用,申请空间后第一时间调用memset函数进行初始化。
内存
覆盖 指向一块
内存
区...
【C++ 高频面试题】
指针
和引用、关于
内存
泄漏和野
指针
问题
🐧①静态变量、全局变量、局部变量;🐧②
指针
和引用的区别;🐧③
内存
泄漏和野
指针
问题
;🖊
C++中的野
指针
和
内存
泄漏
问题
文章目录野
指针
问题
什么是野
指针
野
指针
问题
成因
内存
泄漏智能
指针
野
指针
问题
什么是野
指针
在c++中,使用
指针
是需要解引用去访问一块
内存
地址的。当一个
指针
变量指向的地址是非法地址时,就会出现野
指针
问题
。一般我们在写代码的时候,会对
指针
变量有一个判空处理,但是对于野
指针
时,是不会被 ‘ ptr == nullptr ’ 中识别出来的。会导致在接下来的代码逻辑中,造成非法访问,异常,导致进程崩溃退出等等的
问题
。 野
指针
问题
成因 野
指针
问题
也是一个在实际代码工作中很常见的一个
问题
,也会不同的情况导致野
指针
问题
出现:
c语言中
指针
往
内存
写值,C语言编程常见
问题
解答之
指针
和
内存
分配
指针
为C语言编程提供了强大的支持——如果你能正确而灵活地利用
指针
,你就可以直接切入
问题
的核心,或者将程序分割成一个个片断。一个很好地利用了
指针
的程序会非常高效、简洁和精致。利用
指针
你可以将数据写入
内存
中的任意位置,但是,一旦你的程序中有一个野
指针
("wild”pointer),即指向一个错误位置的
指针
,你的数据就危险了——存放在堆中的数据可能会被破坏,用来管理堆的数据结构也可能会被破坏,甚至操作系...
C和
指针
之动态
内存
分配常见
问题
和总结
1、动态
内存
分配常见
问题
1) 结构体成员
指针
未初始化 2)为
指针
分配
内存
太小 3)
内存
分配成功,但是没初始化 4)
内存
越界,
内存
泄漏,free多次或者释放之后没有设置为NULL 2、测试代码 #include #include #include //结构体成员
指针
需要初始化 struct studen
C语言
70,038
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章