为什么这段代码会出现分段错误?

时间:2011-08-05 06:21:05

标签: c++ pointers segmentation-fault

我写了一个小例子来测试我对指针和内存的理解,但是我确信这会起作用,但后来它给了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 个答案:

答案 0 :(得分:3)

char ** cArray;

cArray是指向指针的非主题指针。你无法取消引用它。

*(cArray + i) = "string";

答案 1 :(得分:1)

cArray未初始化。纠正这个。

char ** cArray = new char*[10];

答案 2 :(得分:0)

cArray变量似乎没有初始化。