CX0069:错误:变量需要堆栈帧?

SBaof 发布于 2014/12/19 21:42
阅读 1K+
收藏 1

这段来自《C语言深度剖析》关于指针的部分

#include <stdio.h>
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

加载中
0
中山野鬼
中山野鬼

.... *p 是个小盒子,里面应该存放 int型。 *p = 0; 表示往这个小盒子里,存放个鸭蛋。 p是个小盒子,里面存放的是个地址。往这个小盒子存放个门牌号码。你取出来看一看,哦,这个门牌号码是说*p这个小盒子放在哪里。

哈。绕清楚了? ubuntu 下如果你运行没有错误的,只能说你运气好。

SBaof
SBaof
对指针的解释很生动!20
0
修改登录密码
修改登录密码

CX0069:错误:变量需要堆栈帧 

表示没看懂这句话的意思,到底是编译时报错还是运行时报错?   你最好用英文版的vc.  中文版的容易误人子弟。

而且堆和栈是两个不同的概念。 


 

修改登录密码
修改登录密码
回复 @SBaof : 你的i是给注释掉的,那你的魔数到底代表什么?为什么不用 p=&i? 你在vc下得到的i地址可能是这个数, 在unbuntu下还是i的地址吗? 我不清楚你说的vs2010和vc到底什么区别,你是用.net还是vc ?还是什么其他东东?
SBaof
SBaof
我用的是VS2010不是VC。。。那个提示是我在调试查看“*p”的内容时显示的,还有就是,0x00bef95c是变量i的地址,通过调试得到的,我应该说清楚了
0
修改登录密码
修改登录密码
0x00bef95c 到底是什么东西? 这个魔数怎么来的???
0
中山野鬼
中山野鬼

引用来自“eel”的评论

0x00bef95c 到底是什么东西? 这个魔数怎么来的???
就是个数值。哈。要不是强制转换,肯定过不去。刚才我还特地用 APPLE LLVM测了一把。对了,请教大家,我搞不清楚他和gcc究竟什么关系?暧昧关系还是夫妻关系。哈。
返回顶部
顶部