我正在尝试实现自己的数学库,并且从向量开始。这个想法是给类一个指向数字数组的指针,然后复制数组并将其存储在私有变量指针给出的数据地址中。首先,我曾经alloca
尝试为私有变量释放一些内存
vml.h
namespace vml {
// Vectors
template <typename in_type, const int in_length>
class vec {
public:
vec(in_type* in_data) {
std::cout << data << std::endl;
std::copy(in_data, in_data + in_length, data);
}
vec() {
data = nullptr;
}
in_type& operator()(int index) const {
_ASSERT(0 <= index && index < in_length);
return data[index];
}
private:
in_type* data = alloca(in_length * sizeof(in_type));
};
主文件
int main() {
int list[] = { 1,2,3 };
int list2[] = {2,4,6 };
vml::vec<int, 3> a(list);
vml::vec<int, 3> b(list);
return 0;
}
这不会产生任何错误,但是由于某种原因,alloca
在调用两个实例时会两次返回相同的地址。我到处搜索这个,我找不到解释为什么。所以我决定使用数组分配内存。如果你能回答这个问题,那将是非常有帮助的。谢谢。