初始化多个指针时出现运行时错误

时间:2012-08-18 16:45:40

标签: c++

这可能只是我对c ++不了解的东西,但为什么这段代码会给我一个运行时错误?如果我没有初始化someInt2或者我没有指定aClass有一个int成员,我没有得到错误。

using namespace std;

class aClass
{
  int someint;
  public:
  aClass()
  {
    someint=4;
  }
};

int bFunc()
{
  return 4;
}


aClass aFunc()
{
  aClass class1=aClass();
  return class1;
}

int main()
{
  int * someInt2;
  *someInt2=bFunc();
  aClass * thisClass;
  cout << "Got here" << endl;
  *thisClass=aFunc();
  cout << "Not here" << endl;
  return 0;
}

2 个答案:

答案 0 :(得分:1)

int * someInt2;
*someInt2=bFunc();

未定义的行为。你没有让someInt2点有意义。

编辑:“看似正常运行”是“未定义行为”可能出现的可能事情之一。

答案 1 :(得分:1)

 int * someInt2;

是一个未初始化的指针,但您正在尝试为其指向的值分配值。您需要分配一些内存或只使用int变量来存储函数的返回值。