我尝试将内存分配给对象指针时会出现SEG故障(尝试动态创建1D数组(。我究竟做错了什么?我首先是由于使用了T型的类型,但即使对于本机数据类型(例如INT(也会发生这种情况。我来自C背景(新的C (,在这里我将使用Malloc/Calloc进行内存分配。
例如:
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);
}
}
简单,t
从未初始化,因此在setup
中将其删除会导致Segfault。
这是因为在t->element = new T[n]
中,您在(可能(非初始化数据成员t
上访问成员element
。