阅读204 返回首页    go 阿里云 go 技术社区[云栖]


c语言之内存扫描

曾经很早的时候学习C语言基础的时候就想过,既然c语言可以不限制指针的使用,那我用一个指针写一个死循环不就可以扫描整个内存了。。。但是显然这个结论是错误的


#include<stdio.h>

 char a;
 char *p=&a;

int main()
{
// 	char a;
// 	char *p=&a;
	int count=0;
	while(1)
	{
		printf("%d   the location is == %o, num == %d\n",++count,p,*p);
		p++;
	}

	return 0;
}


原因我认为应该是c语言为每个函数分配了一个栈空间,如果超过了这个空间就会报错。如果把变量声明到main函数内部,指针指到1031行就报错了【也许不同的编译器和系统结果不同】,但是如果声明到main的外面,就可以指到16064行,这个结果也和上面的结论相一致。


最后更新:2017-04-03 05:39:17

  上一篇:go 文件夹变扩展名
  下一篇:go error: &#39;Can&#39;t connect to local MySQL server through socket &#39;/var/lib/mysql/mysql.sock&#39; (2)&#