将内存分配给指针数组时出现段错误

时间:2017-04-28 21:01:22

标签: c++ arrays c++11 pointers segmentation-fault

当我尝试将内存分配给对象指针(尝试动态创建一维数组)时,我遇到了seg错误。我究竟做错了什么?我首先是因为它必须是由于使用的类型T,但即使对于本机数据类型(例如int)也会发生这种情况。我来自C背景(C ++新手),我将使用malloc / calloc完成内存分配。

e.g:

template <typename T>
struct test {
   T *element;
}

class Foo {

    Foo() {
    //empty
    }
    // as an example using T to be int
    test<int> *t;

    template <typename T>
    void setup(int n) {
      t->element = new T[n];
    }

    void run() {
      setup(10);
    }
}

2 个答案:

答案 0 :(得分:4)

简单,t从未初始化,因此在setup中取消引用它会导致段错误。

答案 1 :(得分:0)

这是因为在t->element = new T[n]中,您可以访问(可能)非初始化数据成员element上的成员t