ubuntu linux下为什么这段代码不报错,该怎么处理

ubuntu linux下为什么这段代码不报错

  #include<stdio.h>
  #include<string.h>

  int main(void)
  {
  char str[5];
  strcpy(str,"hello world!") //这里应该报错
  printf("strcpy over");
  }

  gcc -o test test.c //用gcc编译
  ./test // 执行
  strcpy over //执行结果,但是没有提示strcpy错误,在windows下VS2005里虽然也能打印出strcpy over,但

  是程序会崩溃,为何在ubuntu下没有提示错误?

 

------解决方案--------------------
windows追求更早更快发现错误,他有结构化异常,对访问了系统能够觉察到的非法内存区域(比如NULL指针,比如内核区,比如加了堆栈检查后的越界),能够报错误,而且能和c++的try..catch联动,你这个错误有可能会被VC的C++异常抓到(不是绝对的,代码里不能依赖这一点)

linux则追求更高的容错性,反正保护模式下再怎么乱写也搞不死系统

意识形态不同造成的结果,windows认为一个错误的程序就不应该继续运行,否则可能扩大错误,如果错误的操作了磁盘,则可能造成不可挽回的损失;linux则希望程序只要能运行就让它运行下去,追求连续性