在 for 循环中使用变量,导致段错误
Using a variable in a for loop, causing segfault
我正在练习运算符重载,我的目标是枚举我自己编写的向量类的所有值。
在这样做的过程中,我遇到了一个段错误(没什么大不了的(,并开始削减我的代码以找到它的来源。经过一些困难,我已经到了不明白出了什么问题的地步。
在尝试运行 for 循环以迭代矢量对象中的数据时,我发现如果我使用设置为 10 的变量s
,我会得到段错误。如果我使用整数文字 10,它可以工作。
这对我来说意义不大,但话又说回来,我正在使用不熟悉的概念。任何帮助不胜感激!
这是一个MCVE:
使用 g++ Q1.cpp vector.h -o Q1
进行编译
演示课程(第 1 .cpp 季度(:
#include <iostream>
#include "vector.h"
#define INFO(x) std::cout << "[INFO]: " << x << std::endl;
int main(void) {
// 1- Test the default constructor
INFO(" ---------- Vector 1 ----------");
vector v1;
INFO(v1);
return 0;
}
向量类 (vector.h(:
#include <iostream>
#include <string>
class vector {
public:
float size;
float* data;
vector() : vector(0) {}
vector(int s){
size = s;
data = new float[size]();
}
};
std::ostream& operator<<(std::ostream& stream, const vector& obj){
stream << "vector: size(" << obj.size << ")" << "n";
int s = 10;
for(int i = 0; i < s; ++i){ // problem occurs here, replace s with '10' and it works.
stream << i;
//stream << "data[" << i << "] = " << obj.data[i];
}
}
重载函数需要返回stream
。
此外,不要将size_t
用作类成员名称。这完全令人困惑。
vector
时,还应删除data
数组。它现在泄漏了。
相关文章:
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 如何摆脱C ++中的分段错误错误?
- Clang 8 带有静态 constexpr 和数组的链接器错误 - 错误是什么以及如何解决它?
- 为什么每当我尝试运行此链接列表删除功能时都会收到分段错误错误?
- 如何解决分段错误错误C++
- 作为参数模板的模板类:MSVC 错误 - 错误 C2977:模板参数过多 (C++98)
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- 卷曲给出分段错误错误
- 无法访问 Arduino 结构字段。错误"退出状态 1。xxxx 不命名类型"
- 错误错误 C2872:"布尔值":kinect.h 的不明确符号
- C++打印模板容器错误(错误:"运算符<<"的不明确重载)理解?
- 结构的分割错误错误
- 为什么此代码返回分段错误错误?
- 错误错误:无法编译内置功能
- 分段错误错误C++
- C++ 1Z 错误:错误:演绎指南中声明中的显式限定
- 使用对数据类型的向量的哈希表中的分段错误错误
- 为什么此代码会导致分段错误错误
- JNA结构字段值错误
- C++段故障错误