Я писал коды для Min Stack на LeetCode. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь перераспределить память (по методу pu sh), он говорит мне: «Address Sanitizer: переполнение буфера кучи».
Что является причиной этого и как я могу решить проблему? Спасибо
Кроме того, что может быть лучше для решения этой проблемы?
typedef struct {
int top;
int *arr;
int min;
int size;
} MinStack;
/** initialize your data structure here. */
MinStack* minStackCreate() {
MinStack* stack = (MinStack*)malloc(sizeof(MinStack));
stack->size = 10;
stack->top = -1;
stack->min = INT_MAX;
stack->arr = (int*) malloc(sizeof(int)*(stack->size));
return stack;
}
void minStackPush(MinStack* obj, int x) {
//if top+1 is equal to the size of the stack(when stack is full),
//I want to multiply the size by 2
//so more numbers can fit in the stack.
if(obj->top+1 == obj->size){
obj->size = obj->size*2; // this line seems to give me issues.
obj->arr = realloc(obj->arr, obj->size);
}
obj->arr[obj->top+1] = x;
obj->top++;
}