malloc не выделяет нужное кол-во памяти
Здраствуйте!!! По какой то причине malloc постоянно не выделяет нужное кол-во памяти. Когда я использовал маленькие значения, у меня периодически вылезала ошибка доступа к памяти. Я решил поставить большое значение. Теперь я выделяю 10000 байт, но когда инициализирую переменную EndOfStack то постоянно вылезает ошибка доступа к памяти. Я пробовал уменьшить значение (в EndOfStack вместо ((size_t)10000) я использовал ((size_t)5000)), но это не помогает. Помогите пожалуйста.
#include <malloc.h>
using namespace std;
class Stack {
private:
~Stack() {
ClearAll();
}
const size_t StackSize = 10000;
int TypeSize = sizeof(int);
int CountOfCells = 0;
void* StartOfStack = 0;
void* EndOfStack = 0;
// Stack Pointer
int* SP = 0;
void CleanMemory() {
char* vr = (char*)StartOfStack;
for (;;) {
if (vr == EndOfStack) {
break;
}
*vr = 0;
vr += 0x1;
}
}
public:
Stack(bool cleanMemory) {
StartOfStack = malloc(StackSize);
EndOfStack = ((long long*)StartOfStack + ((size_t)5000));
SP = (int*)StartOfStack;
CountOfCells = 0;
if (cleanMemory == true) {
CleanMemory();
}
}
int PushInStack(int value) {
if (SP < EndOfStack) {
SP += TypeSize;
*SP = value;
}
else if (SP == EndOfStack) {
*SP = value;
}
return 0;
}
int PopFromStack() {
int value = *SP;
if (SP > StartOfStack) {
*SP = 0;
SP -= TypeSize;
}
else if (SP == StartOfStack) {
*SP = 0;
}
return value;
}
int GetCountOfCells() {
return CountOfCells;
}
int GetValueFromStack() {
return *SP;
}
void ClearAll() {
free(StartOfStack);
TypeSize = 0;
CountOfCells = 0;
EndOfStack = 0;
SP = 0;
}
};