私はC++とnetbeansにはかなり新しく、ここでかなりの問題があります。 ビルドは常に成功していますが、私のプログラムを実行すると、RUN FAILED(終了値-1.073.740.940、合計時間:2秒)のエラーが発生します。私のコード:RUN FAILED(終了値-1.073.740.940)
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の... ....しかしそれ以上は、それは最初の2つを印刷して失敗します....しかし、私は短いリストを作成すると、サイズ1の3と言う...それは動作します...私はそれがメモリで何かかもしれないと思う...しかし私は喪失した。アイデア?
ありがとうございます!
ところで:私は、NetBeans 8.2を使用していmingwのG ++ 6.1.0
に
を変更することですか –
終了値 '-1.073.740.940'は、出口値' 0xc0000374'として解釈されます。これは、Windowsコアエラーコード( 'NTSTATUS')を意味すると文書化されています。[ヒープが壊れています](http:// errorco。 de/win32/ntstatus-h/status_heap_corruption/0xc0000374 /)」を参照してください。つまり、メモリ破損のバグがあります。 'valgrind'を適用します。 'valgrind'を使うことができない場合は、実際のコンピュータを入手してください。 – zwol
...あなたのコードをスキミングすると、コピーコンストラクタに明白なバグがあります: 'for(int i = 0; i <5; i ++){'それは 'i
zwol