Почему этот код дает ошибку сегментации? - PullRequest
1 голос
/ 05 августа 2011

Я написал небольшой пример, чтобы проверить мое понимание указателей и памяти, однако я был уверен, что это сработает, но потом это дало ошибку seg ... Есть идеи, что я делаю неправильно? Добавить: я запустил этот код с другим кодом.

#include <iostream>
using namespace std;

struct Card {

  int a;
  Card(int a) : a(a) { }

};

int main() {

  int **p;
  int **p2;
  int *a;
  int b =3;
  char ** cArray;
  Card **c = new Card*[5];
  for (int i = 0; i<5; i++)
     c[i] = new Card(1);


  a = &b;
  for (int i = 0; i< 10; i++) {
    p = &a;
    //  p2[i] = new int;
    *(cArray + i) = "string";
    cout << cArray[i]<< endl;
  }



  for (int i = 0; i< 10; i++) {
    // p2[i] = a; 
    cout << *a << endl;
  }

}    

Ответы [ 3 ]

3 голосов
/ 05 августа 2011
char ** cArray;

cArray - неинициализированный указатель на указатель. Вы не можете прекратить ссылаться на него.

*(cArray + i) = "string";
1 голос
/ 05 августа 2011

cArray неинициализирован. Исправьте это.

char ** cArray = new char*[10];
0 голосов
/ 05 августа 2011

переменная cArray, похоже, не инициализирована.

...