向量交换的向量中的分割故障,将内存分配给指针为向量的向量
segmentation fault in vector of vector swap,allocate memory to pointer to vector of vector
struct pos包含开始和结束substringpos向量包含一个POSpos的阵列向量包含substringpos数组的大小通过备用呼叫来增加置换号码数组的第一个元素基源点通过交换调用
复制到数组的其他元素 struct Pos
{
int start;
int end;
};
typedef vector<Pos*> PosVector;
vector<struct Pos*>substringPos;
struct Pos*temp=new Pos;
temp->start=3;
temp->end=10;
substringPos.push_back(temp);
vector<PosVector*> array;
array.push_back(&substringPos);
array.reserve(permutations);
for(int v=1;v<permutations-1;v++)
{
array[v]->push_back(temp);//gives segmentation fault
array[v]->swap(*array[0]);//gives segmentation fault
}
vector<PosVector*> array;
array.push_back(&substringPos);
array.reserve(permutations);
for(int v=1;v<permutations-1;v++)
{
array[v]->push_back(temp);//gives segmentation fault
array[v]->swap(*array[0]);//gives segmentation fault
}
此代码表现出不确定的行为。让我们假装,permutations
变量是初始化的,大于1。当您调用array.reserve
时,您将内存分配给array
向量存储以存储permutations
元素计数。每个元素都是PosVector
的指针。由于您从未初始化它们,因此试图解决非初始化的指针会导致不确定的行为,在您的情况下,您会得到细分错误。也许最好存储向量本身,而不是指针?
此错误是由于向量下标引起的。向量或数组应在索引0开始。请更改以下如下
for(int v=0;v<permutations-1;v++)
{
// your code
}
相关文章:
- 用字符串的向量分配字符串向量
- 如何将向量分配给参考变量?
- 如何将C++向量分配给非表全局变量
- 向量分配上的 C++ 分割错误
- 如何将int分解为数字并以相同的顺序为向量分配数字
- 将向量分配给一个元素
- 将向量分配给向量向量的向量时,向量是范围的
- 带有Valgrind的C 的向量分配中的内存泄漏
- 将向量分配给另一个
- 为向量分配内存
- 为结构的整个向量分配结构的元素
- 将向量分配给结构的向量字段
- C++对象的向量:分配对象
- C++:通过从映射向量分配映射实例来填充映射的映射
- 将儿童的向量分配给祖父母的向量
- 使用 std::向量分配的类比 LOT 的指针分配慢
- C++ 向量分配问题
- 为什么向量分配会改变分配的向量
- 在C++中初始化向量时,你能给向量分配一个大的内存块吗
- 向量分配中的问题