Stos z dynamiczną tablicą.

0

Cześć,
chce napisać klasę stosu z dynamiczną alokacją pamięci. Próbuję w ten sposób:
class stock
{
int wielkosc,k;

int *tab =new int[wielkosc];
public:
stock(int=-1);
void wprowadz_wielkosc(int);
void pop();
void push(int);
void show();
bool is_full();

};
Wszystko działa dopóki nie stworzę dwóch obiektów klasy. Wtedy wywala błąd alokacji. Jestem początkujący. Może ktoś mi powiedzieć czemu się tak dzieje i jak to naprawić? Pozdrawiam!

1
  1. Stack, a nie "stock".
  2. Alokacje pamięci dla tablicy zrób najlepiej w konstruktorze.
  3. Następnie musisz ją zdealokować w destruktorze za pomocą delete.
1

A co tam. Ostrzegam tylko, że mogą być błędy. W C++ bez valgrind'a czuję się jak bez ręki, a nie mam do niego teraz szybkiego dostępu.

#include <iostream>
#include <limits>
using namespace std;

class stack {
	int *array;
	size_t count;
	size_t top;

public:
	stack(size_t count) : count(count), top(0), array(new int[count]) {	}

	int pop()
	{
		return top > 0 ? array[--top] : numeric_limits<int>::min();
	}

	void push(int value)
	{
		if (top < count)
			array[top++] = value;
	}

	~stack() { if (this->array) delete[] this->array; }
};

int main()
{
	stack my_stack(2);
	my_stack.push(10);
	cout << my_stack.pop() << "\n";
	my_stack.push(4);
	cout << my_stack.pop() << "\n";

	return 0;
}

Niemniej chyba wygląda w porządku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1