memset初始化指针指向

char*send;使用malloc为send分配空间后用:memset(send,0,sizeof(send));然后用:if(NULL==send){printf("... char *send;
使用malloc为send分配空间后用:
memset(send, 0, sizeof(send));
然后用:
if (NULL == send) {
printf("null\n");
}
为啥这里不会打印null呢?用memset()会让send指向ascii的0,即NUL?谢谢!
ascii的0是空字符,不是NULL空地址
展开
 我来答
leafallen
2011-08-31 · TA获得超过1.1万个赞
知道小有建树答主
回答量:1169
采纳率:50%
帮助的人:1235万
展开全部
if (NULL == send) {
printf("null\n");
}
这句话是判断send是否“指向空”(例如malloc时候错误等等)而不是其指向的内容
memset(send, 0, sizeof(send));只是将其指向的内容的一片连续区域的内存设为0
两者不是一回事
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
kaixingui2012
2011-08-31 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6811万
展开全部
两个问题:
一、char *send;
使用malloc为send分配空间后用:
memset(send, 0, sizeof(send)); //这句应用不合适,不能完全初始化send所指向的地址空间
****************************************sizeof(send)==4(32位机上,所有指针的长度都是四个字节)
应当这样应用
send=malloc( Length ); //Length为要申请的空间大小(字节数)
if ( send == NULL ) //malloc出错会返回NULL给send
{
printf("malloc error!" );
exit(-1);
}
memset( send , 0 , Length ); //注意这里的长度为Length,即申请多少空间就初始化多大内存

二、if (NULL == send) { //malloc成功后,send就指向了新分配的址,当然不是NULL
printf("null\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
intmov
2011-09-01
知道答主
回答量:13
采纳率:0%
帮助的人:18.9万
展开全部
memset是初始化send指针指向的内存,send指针本身存储在另外一个地方,如果send==NULL,要memset函数做什么。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式