c对数组越界不报错的,需要程序员自己检查,这也是一些人批评c的原因!这个问题有个更好的代码 手头没有 不过这个问题理解明白就好了 溢出也是被攻击的地方之一
运行起来就一直跑着(像死循环一样,结束不了main函数)解释这个 原本i到8就停止了!!!
但是a[9] =0恰巧改的位置就是I的值!!!所以i=0;for循环就结束不了,但是这有个前提,栈的方向是从高到低,不懂?这样理解吧.编译器帮你分好地方后是这样的:
a[0] .....a[8] a[9] (i) 其实a[9] 和i一个位置 你打印他们的地址看看 比较下 若栈从低到高 就不会了
函数名: remove
功 能: 删除一个文件
用 法: int remove(char *filename)
程序例:
#include <stdio.h>int main(void)
{
char file[80]
/* prompt for file name to delete */
printf("File to delete: ")
gets(file)
/* delete the file */
if (remove(file) == 0)
printf("Removed %s.\n",file)
else
perror("remove")
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)