刚到C++面临段错误
New to C++ facing a segfault
我刚刚开始学习C++并尝试移植一些PHP代码。
我从这段代码中得到一个段错误:
class Color {
public:
// Props
int r;
int g;
int b;
int a;
// Constructor
Color (int r, int g, int b, int a) {
this -> r = r;
this -> g = g;
this -> b = b;
this -> a = a;
};
// Destructor
~Color () {
delete this;
};
// Mix 2 colors
void mixColor (const Color& c) {
this -> r = (this -> r + c.r) / 2;
this -> g = (this -> g + c.g) / 2;
this -> b = (this -> b + c.b) / 2;
this -> a = (this -> a + c.a) / 2;
};
};
在主文件中:
int main () {
Color myColor (10, 20, 30, 40);
return 1;
}
知道是什么原因造成的吗?
谢谢。
扩展当前答案。
在这种情况下,您不能使用 delete 的原因是,通过使用 'new' 关键字,您在堆栈上创建了对象,并且当创建对象的范围不再相关时,它将自动销毁。
这对于您发布的对象很有用,因为它很小,更重要的是,它不会在内部管理任何类型的内存,这可能会导致一些内存泄漏。
此外,由于类中的所有内容都是公共的,因此您可以考虑将其设置为结构。
您应该只对分配给new
的内容调用delete
。您没有分配带有new
this
,所以您不应该打电话给delete
。
相关文章:
- 为什么PyImport_ImportModule python 3.7.2 中出现段错误?
- 为什么在访问 vtkRenderWindow 的"交互器"变量时会发生段错误?
- 全局向量导致 C++ 程序结束时出现段错误
- 为什么重载运算符<<打印特征类成员会导致段错误?
- 更改条件段错误
- 使用 TTF_RenderText() 加载字体时获取段错误 TTF_OpenFontRW()
- 注册对对象工厂的调用会导致段错误
- pthread_create在构造函数段错误中
- Nanoflann发现邻居提出段错误
- C++ 中的构造函数、继承、堆栈、堆、this-pointer 和段错误
- 具有unique_ptr的 CRTP 会导致段错误
- 增强纤维work_stealing屏障会导致段错误
- 当我返回指向结构的指针向量时出现段错误
- C++为什么我的代码没有爆炸/段错误?
- Pthread段错误,使用指向main中变量的指针
- C++ 模板中的段错误
- 相当于Windows/MSVC上的段错误?
- 为什么我的 LLVM JIT 实现出现段错误?
- 为什么访问我的引用捕获变量会导致我的 lambda 函数出现段错误?
- 为什么自删除的全局 Vulkan 实例仅在添加层时才导致段错误?