社区
C语言
帖子详情
用memset()给字符串指针赋值的问题
sunnycrystal_2008
2008-05-08 09:59:00
我写了这样一段代码:
unsigned char *tt;(tt已经被分配了一段内存空间,长度为len, 且值为0)
memset(tt, 0, len);
编译时没错,但是程序运行到memset函数时就崩了,这是为什么呢?难道memset不能给已经是“0”的字符串再清空?
...全文
1396
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`中管理的
指针
变为野
指针
,使得后续对该
指针
的操作(例如读取或修改
字符串
内容)变得不可预测。 - **内存泄漏**:由于`
memset
`的操作可能会覆盖`std::string`内部使用...
指针
学习 单纯的
指针
学习
- 当直接用`=`将
字符串
赋值
给
指针
时,实际上是让
指针
指向了一个常量
字符串
,这意味着不能对该
字符串
进行修改。 - 使用`strcpy`或`
memset
`等函数尝试修改这个常量
字符串
会导致程序崩溃。 **建议**: - 避免对通过这种...
memset
和bzero.pdf
关于例子中提到的内存访问冲突,如果`
memset
`作用于
字符串
字面量,可能会遇到
问题
,因为
字符串
字面量是常量,存放在只读内存中,尝试修改会导致错误。不过,如果`s`是一个字符数组,如`char s[]="Golden Global View...
单片机c语言
字符串
操作
`strstr()` 函数用于在
字符串
`str1` 中查找 `str2` 的首次出现,返回找到的子
字符串
的
指针
。如 `strstr(str, "34")` 将返回 "34" 的起始位置。 `strcmp()` 函数比较两个
字符串
,如果相同则返回0,不同则返回非0值...
结构体中数组成员
赋值
要给结构体
赋值
,我们需要使用 `
memset
` 函数来初始化结构体,然后使用
赋值
语句来设置成员变量的值。例如:`Zhangsan.num = 7;`。但是,对于字符数组 `name`,我们不能直接使用
赋值
语句,因为它是一个数组类型。于是...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章