运行失败(exit value -1.073.740.940)
RUN FAILED (exit value -1.073.740.940 )
我是c++和netbeans的新手,这里有一个相当大的问题,我不能把我的手指放在错误可能是什么。构建总是成功的,但我得到一个RUN FAILED(退出值-1.073.740.940,总时间:2s)错误,当运行我的程序。我的代码:
Arraylist.hpp:
#include <iostream>
namespace hfu {
class Arraylist {
private:
double* members;
int size;
public:
Arraylist(int);
~Arraylist();
Arraylist(const Arraylist&);
double get(int) const;
void set(int, double);
Arraylist& operator=(const Arraylist&);
//float operator[](int);
friend std::ostream& operator<<(std::ostream&, const Arraylist&);
};
}
Arraylist.cpp:
#include "Arraylist.hpp"
#include <exception>
namespace hfu {
Arraylist::Arraylist(int i) : size(i), members(new double[size]) {
for (int i = 0; i < size; i++) {
set(i, 0);
}
}
Arraylist::~Arraylist() {
delete members;
}
Arraylist::Arraylist(const Arraylist& other) : size(other.size), members(new double[other.size]) {
for (int i = 0; i < 5; i++) {
set(i, other.get(i));
}
}
double Arraylist::get(int i) const {
if (i < 0 || i >= size) {
throw (std::exception());
} else {
return members[i];
}
}
void Arraylist::set(int i, double value) {
if (i < 0 || i >= size) {
throw (std::exception());
} else {
members[i] = value;
}
}
Arraylist& Arraylist::operator=(const Arraylist& other) {
size = other.size;
for (int i = 0; i < size; i++) {
set(i, other.get(i));
}
return *this;
}
// float Arraylist::operator [](int index) {
// return members[index];
// }
std::ostream& operator<<(std::ostream& os, const Arraylist& list) {
for (int i = 0; i < list.size; i++) {
os << "[" << list.get(i) << "]";
}
return os;
}
}
main.cpp:
#include "Arraylist.hpp"
int main() {
try {
auto a1 = hfu::Arraylist(10);
std::cout << a1 << std::endl;
auto a2 = hfu::Arraylist(10);
std::cout << a2 << std::endl;
auto a3 = hfu::Arraylist(10);
std::cout << a3 << std::endl;
}
catch (std::exception& e) {
std::cout << e.what() << std::endl;
}
}
我可以创建2个Arraylist....对象但没有更多,它将打印前两个,然后失败....但是当我创建更短的列表时,比如3个大小为1的列表……它会起作用的……所以我认为这可能与记忆有关……但我很茫然。想法吗?
非常感谢!
btw:我使用netbeans 8.2和mingw++ 6.1.0
成员变量的初始化顺序由它们在类中的定义的顺序来定义,而不是由它们在初始化列表中的顺序来定义。事实上,你的编译器应该给你"hfu::Arraylist::size将在"之后初始化"警告。
因此,在您的情况下,members
在size
之前初始化,因此当size
仍然是垃圾时调用new double[size]
。在我的例子中,它只是导致std::bad_array_new_length
被抛出。在您的情况下,事情变得更糟,您的应用程序崩溃了。
所以解决方案是改变
class Arraylist {
private:
double* members;
int size;
class Arraylist {
private:
int size;
double* members;
相关文章:
- 如果没有malloc,链表实现将失败
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 视图中的参数推导失败:take_while
- 链接到自行创建的dll失败
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- gcc和c++17的过载解析失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 从父数组测试用例构造二叉树失败
- static_assert<std::is_floating_point<T>::value, " " ) 由于未使用的模板类型而失败
- static_assert 在使用 boost 反序列化二进制数据时失败"typex::value"失败
- 为什么 is_default_constructible<Class>::value 在同一类范围内失败
- 运行失败(exit value -1.073.740.940)
- /boost/lockfree/queue.hpp:错误:静态断言失败:(boost::has_trivial_destructor<T>::value)