Недавно, когда я писал код для реализации стека. Я сталкивался с этим сомнением. Пожалуйста, помогите мне пройти через это. Код написан так, как показано ниже.
struct Stack{
int top;
int capacity;
int *array;
}
Stack* createStack(int capacity){
Stack *S = new Stack;
S->capacity = capacity;
S->top = -1;
S->array = new int[capacity];
return S;
}
void Delete(Stack *S){
delete S->array;
delete S;
}
Теперь мои сомнения заключаются в функции удаления. Как мы видим, S указывает на блок памяти типа Stack. Внутри которого есть еще один указатель, указывающий на массив блоков типа int. Что произойдет, если S-блок будет удален напрямую без удаления блока массива?