Для начала, вы должны постинкрементно увеличивать индекс массива, поэтому измените:
elementsInArray++;
stackArray[elementsInArray] = aValue;
на:
stackArray[elementsInArray++] = aValue;
или:
stackArray[elementsInArray] = aValue;
elementsInArray++;
Во-вторых, когда вы создаете новый временный массив, вы делаете это внутри оператора if ... поэтому он является локальной переменной и помещается в системный стек и теряется после выхода из оператора if.Поэтому измените
int temporaryArray[allocatedArraySize*beta];
на:
int *temporaryArray = new int[allocatedArraySize*beta];
В-третьих, добавьте удаление, о котором вы говорили, сохранив исходный указатель из stackArray перед копированием расположения tempArray и затем выполните удалениепосле того, как вы сделали копию указателя.
Наконец, вам нужно будет сделать аналогичные изменения в вашей поп-функции ...