请问为何 结构体成员 赋值时 0xC0000005: Access Violation.
在主函数里给结构体成员赋值编译通过GO一下却说 First-chance exception in xc.exe: 0xC0000005: Access Violation.
请大家指点一下 哪里有毛病 {:9_241:}
#include "stdafx.h"
#include<iostream>
using namespace std ;
struct sf
{
int vm ;
} *st;
int main()
{
st->vm = 900 ;
cout<<"vm is "<<st->vm<<endl ;
return 0;
}
st是一个指针,它没有初始化,随机指向内存中的一个位置。然后你企图向这个随机内存写入值,所以出问题。这就是著名的“野指针”问题又称“悬垂指针”问题 仰望天上的光 发表于 2014-10-16 16:26
st是一个指针,它没有初始化,随机指向内存中的一个位置。然后你企图向这个随机内存写入值,所以出问题。这 ...
感谢老兄指教 我加了一行
st = (struct sf *)malloc(sizeof(struct sf)) ;
但是只有加入函数体才能编译通过 如果在外面就不行这个怎么解释好
下面这样就通不过
#include "stdafx.h"
#include<iostream>
using namespace std ;
struct sf
{
int vm ;
} *st;
st = (struct sf *)malloc(sizeof(struct sf)) ;
int main()
{
st->vm = 900 ;
cout<<"vm is "<<st->vm<<endl ;
system("pause") ;
return 0;
}
PDMS 发表于 2014-10-16 19:45
感谢老兄指教 我加了一行
st = (struct sf *)malloc(sizeof(struct sf)) ;
//#include "stdafx.h"
#include<iostream>
using namespace std ;
struct sf
{
int vm ;
};
//st = (struct sf *)malloc(sizeof(struct sf)) ;
struct sf* st = (struct sf *)malloc(sizeof(struct sf)) ;
int main()
{
st->vm = 900 ;
cout<<"vm is "<<st->vm<<endl ;
system("pause") ;
return 0;
}
函数体外的全局变量智能进行初始化(如我的代码),不能进行赋值(如你的代码)。还有。。。都用C++了。。。还在malloc啊。。。
页:
[1]