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