每当我运行注释代码时程序崩溃

每当我运行构造函数钱的注释部分程序崩溃。 当我编译它时,它也不会抛出任何错误。 有人能告诉我发生了什么事吗?每当我运行注释代码时程序崩溃

另外我想在这里实现自动售货机的问题。 我已经删除了一些正常工作的代码部分。

#include <iostream> 

using namespace std;

class money

{

public :

int *max;

int *accepted_values = new int[10];

bool present;

int *deposited;

int i;

money()

{

}

money(int *a, int how_many)

{

//*max = how_many;

// for (i=0; i<how_many; i++)

// {

// accepted_values[i] = a[i];

// }

//*deposited = 0;

present = false;

}

};

class Vending_machine

{

public :

money *coins = new money(accepted_coins, 5);

//money *coins = new money();

int *amount_deposited = new int;

Vending_machine()

{

cout<<"Cool";

}

~Vending_machine()

{

delete amount_deposited;

}

};

int main()

{

Vending_machine a;

}

回答:

您提领该INT指针在构造函数int *maxint *deposited,不先分配适当的内存地址。

由于它是未定义的行为,它总是会崩溃。

int* myPointer; 

*myPointer = 10; // crashes

指针总是先指向一个有效地址,然后才能使用它。 这可能是另一个变量的地址:

int myInt; 

int *myPointer = &myInt;

*myPointer = 10; // doesn't crash - myInt now is 10.

,或者它可以动态分配和释放。

int* myPointer = new int; 

但是在这种情况下,您必须注意一旦完成后释放内存。

delete myPointer; 

更好的解决方案是使用std::unique_ptr<>,这需要解除对破坏其指针的照顾。

但是最好的解决方案是根本不使用指针,如果它们不是真的需要的话 - 尤其是如果你不知道指针如何工作的话。我假设你可以完全避免使用指针。

以上是 每当我运行注释代码时程序崩溃 的全部内容, 来源链接: utcz.com/qa/260238.html

回到顶部