閱讀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)&#