Visual c++ 避免在下标运算符中使用临时变量

Visual c++ 避免在下标运算符中使用临时变量,visual-c++,reference,subscript-operator,Visual C++,Reference,Subscript Operator,我有一个v类,它动态地分配一个double数组。条目是指向此数组开头的指针。间距允许我跳过条目,例如,如果我只考虑每第三个条目,间隔将是3。p> double& v::operator[] (const int n) { return entries[n*spacing]; } 此下标运算符可编译,但会导致堆损坏。基于我的web搜索,我认为VisualStudio正在将条目[n*spacing]的结果存储在临时文件中,然后返回对临时文件的引用。当我尝试写入此引用以释放内存时,

我有一个v类,它动态地分配一个double数组。条目是指向此数组开头的指针。间距允许我跳过条目,例如,如果我只考虑每第三个条目,间隔将是3。p>
double& v::operator[] (const int n) {
    return entries[n*spacing]; 
}
此下标运算符可编译,但会导致堆损坏。基于我的web搜索,我认为VisualStudio正在将条目[n*spacing]的结果存储在临时文件中,然后返回对临时文件的引用。当我尝试写入此引用以释放内存时,会发生堆损坏

有人有解决办法的想法吗

我认为VisualStudio将条目的结果[n*spating]存储在一个临时文件中,然后返回对临时文件的引用

这是不正确的。假设条目定义为双条目[];或double*条目,然后条目[i]返回一个引用,即下标运算符返回的引用


你的问题源于其他地方。可能是n*间距超出了数组边界,或者在访问引用时整个条目被释放。

进一步检查表明条目无效。谢谢K-ballo。