当我尝试将内存分配给对象指针(尝试动态创建一维数组)时,我遇到了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);
}
}
答案 0 :(得分:4)
简单,t
从未初始化,因此在setup
中取消引用它会导致段错误。
答案 1 :(得分:0)
这是因为在t->element = new T[n]
中,您可以访问(可能)非初始化数据成员element
上的成员t
。