程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 指針-CX0069:錯誤:變量需要堆棧幀

指針-CX0069:錯誤:變量需要堆棧幀

編輯:編程綜合問答
CX0069:錯誤:變量需要堆棧幀

這段來自《C語言深度剖析》關於指針的部分

#include
int main()
{
// int i=10;
int *p=(int *)0x00bef95c;//0x00be95c是變量i的地址
*p=NULL;//這一行的問題
p=NULL;
return 1;
}

在VS2010下測試時,提示:CX0069:錯誤:變量需要堆棧幀

在Ubuntu下測試時,有一個warning如下:

warning: assignment makes pointer from integer without a cast
問題來了:1.對堆棧幀不太了解,百度了,但是都是一些關於堆棧的回答,沒有滿意的

2.不清楚為什麼在VS下有這麼一個錯誤,而linux下只是一個warning

最佳回答:


root@landpack:~/ak/code/c/test# ./t20
A40A972Croot@landpack:~/ak/code/c/test# ./t20
7ABE0FCroot@landpack:~/ak/code/c/test# ./t20
47769E8Croot@landpack:~/ak/code/c/test# 

以上是我的執行結果:
代碼如下:

#include <stdio.h>
int main(void)
{
    int i=10;
    printf("%X",&i);
    return 0;
}

你在代碼中試圖讓一個指針強制指向一個地址,
而這個地址我估計你只是上一次執行後記錄下的,然後試圖賦值給p
程序每次加載到內存中執行時分配給變量的地址都在改變,你怎麼能這樣給p賦值呢!
希望能幫到你!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved