社区
C语言
帖子详情
用memset()给字符串指针赋值的问题
sunnycrystal_2008
2008-05-08 09:59:00
我写了这样一段代码:
unsigned char *tt;(tt已经被分配了一段内存空间,长度为len, 且值为0)
memset(tt, 0, len);
编译时没错,但是程序运行到memset函数时就崩了,这是为什么呢?难道memset不能给已经是“0”的字符串再清空?
...全文
1405
54
打赏
收藏
用memset()给字符串指针赋值的问题
我写了这样一段代码: unsigned char *tt;(tt已经被分配了一段内存空间,长度为len, 且值为0) memset(tt, 0, len); 编译时没错,但是程序运行到memset函数时就崩了,这是为什么呢?难道memset不能给已经是“0”的字符串再清空?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
54 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
skyctr
2009-04-20
打赏
举报
回复
留名,学习
茻鄷
2008-05-12
打赏
举报
回复
tt指向name,但是name没有初始化!只初始化了结构体的指针
汪岩的爸爸
2008-05-12
打赏
举报
回复
memset没有问题,我一直那么初始化,我认为是你没有给tt申请空间。
sunnycrystal_2008
2008-05-11
打赏
举报
回复
谢谢有这么多热心的人帮助,我按照大家的说法做了一下,确实是这个问题,我的分数就给最先给我答案的人了,其它的人就不好意思了,呵呵!以后继续向大家学习!!!
bbplayers
2008-05-11
打赏
举报
回复
tt指向name,但是name没有初始化!
WindBoy1987
2008-05-11
打赏
举报
回复
[Quote=引用 29 楼 Chiyer 的回复:]
C/C++ code
改法1
#include "stdlib.h"
typedef struct
{
unsigned char Name[32];
bool Need;
bool NeedBuf;
int Type;
}DEF_PARAM, *PRT_DEF_PARAM;
int main() {
PRT_DEF_PARAM dd;
unsigned char *tt;
dd = (PRT_DEF_PARAM )malloc(sizeof(DEF_PARAM));
memset(dd, 0, sizeof(DEF_PARAM));
return 0;
}
改法2
#include "stdlib.h"…
[/Quote]
这也解决不了吗?
kingmax54212008
2008-05-11
打赏
举报
回复
学习了。呵呵~~~
svnware
2008-05-10
打赏
举报
回复
路过看看,楼上的朋友们已经解释的很清楚了!
laowang2
2008-05-10
打赏
举报
回复
up
geldqb
2008-05-10
打赏
举报
回复
tt = dd->Name;
没有给dd->Name分配空间.
dd->Name是一个野指针.
qinqinhao
2008-05-10
打赏
举报
回复
up
帅得不敢出门
2008-05-10
打赏
举报
回复
[Quote=引用 31 楼 dingguobin 的回复:]
应该注意:malloc是的4096确实不妥 sizeof更合理
dd = (PRT_DEF_PARAM )malloc(4096);
这个只是指向结构体的指针,在你的结构体里还有Name 这个指针.
你没有给name分配空间,所以会崩溃.
[/Quote]
关键在于这个name无空间 你怎么操作
browningblue
2008-05-10
打赏
举报
回复
you don't allocate memory for Name.
ribut9225
2008-05-10
打赏
举报
回复
楼主可以结帐了
jiaohhp
2008-05-10
打赏
举报
回复
同意。
就是name没有分配空间!
yueyeli
2008-05-10
打赏
举报
回复
你自己的错!memset没有错
red_berries
2008-05-10
打赏
举报
回复
[Quote=引用 18 楼 Treazy 的回复:]
以后就直接点,把代码帖出来
找问题方便多了
连空间都没分配还说已经分配了
瞎猜有啥猜的
[/Quote]
tujie1899
2008-05-10
打赏
举报
回复
呵呵,又是指针的老套路了!
用指针小心点!!
奔跑哥
2008-05-09
打赏
举报
回复
但是在用memset的时候最后一个参数应该是 sizeof(type) × len吧
奔跑哥
2008-05-09
打赏
举报
回复
哦,看错了,不对。len 对着。
加载更多回复(32)
包含string对象的结构与
memset
初始化操作
memset
初始化std::string对象时,按字节顺序将std::string对象所在空间清零,破坏了std::string对象的成员结构,使Myroxy
指针
资源变为野
指针
,操作其迭代器会出现不可预知的异常,在存储
字符串
时可能分配了不必要的内存空间,并且还导致这些内存不能被释放。 回到
memset
函数,它设计的初衷是对结构资源连续的空间进行
赋值
操作,而对于较为复杂和抽象的类型,包括我们自定义的各种业务类型,这些类型中可能存在多层继承关系,那么这些结构资源中就隐藏着虚函数表、虚
指针
,对于多层聚合、组合的类型也会存在自定义类型的
指针
对象,这些资源都可能不是连续的空间去存储,如果使用
memset
去初始化这类资源,自然是违背了
memset
设计初衷,导致程序出现不可预知的异常。 除了
memset
函数外,在使用memcpy、_memccpy、memove这些函数操作上述的资源时,也需要注意类似的异常发生。
指针
学习 单纯的
指针
学习
本文件中主要是
指针
的学习,专讲
指针
,没学好
指针
的可学习下,希望能给大家帮助!
memset
和bzero.pdf
。。。
单片机c语言
字符串
操作
大家知道strcpy 是子环节复制
字符串
,可能不知道还有个strncpy,这是复制指定长度的
字符串
chardes[]="Hello,iam!"; charsource[]="abcdefg"; strncpy(chardes,charsource,3); 这时chardes的值是abc 注意这里可不是把abc添加在!后面的,是从chardes这个数组的首地址开始
赋值
的,最后会加上'\0'做结束符
结构体中数组成员
赋值
用实例教你给结构体中数组成员
赋值
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章