0

これはおそらく私が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;
}
4

2 に答える 2

1
int * someInt2;
*someInt2=bFunc();

Undefined behaviour. You didn't make someInt2 point anywhere meaningful.

Edit: "Appearing to function correctly" is one of the possible things that "undefined behaviour" can be.

于 2012-08-18T16:47:14.750 に答える
1
 int * someInt2;

は初期化されていないポインタですが、それが指すものに値を割り当てようとしています。int関数の戻り値を格納するには、メモリを割り当てるか、変数を使用する必要があります。

于 2012-08-18T16:49:36.180 に答える