非法内存访问的问题,求解

lqiang518 2013-02-06 09:18:50
#include <stdio.h>
int main()
{
char* str=NULL;
scanf("%s",str);
printf("%s\n",str);
return 0;
}
以上编译时是没问题的,运行时显示非法内存访问,不知是什么原因。
...全文
442 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
25K纯帅 2013-02-13
  • 打赏
  • 举报
回复
当你仅仅定义一个指针事,系统是不为其分配内存的,
gdcz_chy 2013-02-13
  • 打赏
  • 举报
回复
引用 2 楼 amoyman 的回复:
char* str=NULL;//没有分配内存 scanf("%s",str);//这时候往哪里写呢?往非法内存写,当然出错了 编译的时候,没有检验str指向的内存是否合法,这个检验在执行的时候才做的 所以,编译可以通过,执行时非法内存访问
已经说的很清楚了。
a62ju9 2013-02-12
  • 打赏
  • 举报
回复
INT_INIT 2013-02-11
  • 打赏
  • 举报
回复
wizard_tiger 2013-02-11
  • 打赏
  • 举报
回复
没有申请内存空间啊! 只是这个指针指向NULL。
swlilike 2013-02-07
  • 打赏
  • 举报
回复
F5
ForestDB 2013-02-07
  • 打赏
  • 举报
回复
指针无所指。
阿麦 2013-02-06
  • 打赏
  • 举报
回复
char* str=NULL;//没有分配内存 scanf("%s",str);//这时候往哪里写呢?往非法内存写,当然出错了 编译的时候,没有检验str指向的内存是否合法,这个检验在执行的时候才做的 所以,编译可以通过,执行时非法内存访问
独自听枫 2013-02-06
  • 打赏
  • 举报
回复

#include <stdio.h>
int main()
{
 char* str=(char*)malloc(50);//申请一段内存先
 scanf("%s",str);
 printf("%s\n",str);
 return 0;
}

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧