У меня проблема с перераспределением памяти динамически выделяемого массива. Итак, я пытаюсь сделать следующее:
typedef struct {
int s;
int l;
int* arr;
bool orient;
}DAC;
...
int main()
{
DAC heap = {
4, 0, (int*)malloc(4 * sizeof(int))
};
char c = 0;
int n = 0;
while (1)
{
scanf("%c", &c);
switch (c)
{
case '+':
if (heap.s == heap.l)
{
heap.s *= 2;
heap.arr = (int*)realloc(heap.arr, heap.s);
}
scanf("%d\n", &(heap.arr[heap.l]));
heap.l++;
break;
case 'p':
for (int i = 0; i < heap.l; i++)
printf("%d ", heap.arr[i]);
printf("\n");
break;
}
}
}
Пока вся моя структура работает для n <5 (я начинаю с массива размером '4'), при выполнении этого блока происходят странные вещи: </p>
if (heap.s==heap.l)
{
heap.s*=2;
heap.arr=(int*)realloc(heap.arr,heap.s);
}
В чем причина того, что я получаю неправильный вывод в индексе [2] моего массива? Я знаю, что могу сделать это с помощью mallocs, просто интересно, потому что я думаю, что это странный случай
Весь ввод / вывод:
+ 1
+ 2
+ 3
+ 4
p
1 2 3 4
+ 5
p
1 2 -33686019 4 5