есть вот у меня array, я применяю к нему realloc(), где указываю размер, который меньше текущего на один int. Принтую array[9](при длине 9) и он мне выдает значение, которое хранилось в нём до realloc()
Должны, если realloc нормально завершился.
Дмитрий, сколько раз уже говорить ШЛИ КОД! Без кода иди в пень. Кто ж знает что ты там напорол и какие сказки рассказываешь?
int main(int argc, char **argv) { int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int *array; int size = sizeof(a) / sizeof(a[0]); array = (int*)malloc(sizeof(a)); memcpy(array, a, sizeof(a)); printArray(array, size);//1, 2, 3, 4, 5, 6, 7, 8, 9, 10 size--; int memSize = sizeof(a[0]) * size; printf("%d\n", memSize);//36 array = (int*)realloc(array, memSize); printf("%d\n", array[9]);//10 return 0; } как-то так
Замени printf("%d\n", array[9]);//10 на printf("%d\n", array[size - 1]);
Обсуждают сегодня