9 / 9 / 2
Регистрация: 11.08.2011
Сообщений: 66
|
||||||
1 | ||||||
Указатель на середину массива в free()13.02.2012, 19:30. Показов 2549. Ответов 7
Метки нет (Все метки)
Допустим есть некоторый код:
Могу сразу сказать, что к ошибке компиляции или выполнения это не приводит.
0
|
13.02.2012, 19:30 | |
Ответы с готовыми решениями:
7
Вставить число 0 в середину на k место, сделать через указатель Почему указатель невалиден, и программа вылетает на free()? Найти среднее арифметическое элементов массива и включить найденное значение в середину массива Втсавить число 0 в середину массива М (20), предварительно сдвинув вправо значения элементов массива, начиная с 11 |
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
13.02.2012, 21:13 | 2 |
Память выделяется и освобождается целыми кусками, нельзя убрать лишь часть(разве что с помощью realloc, но и это только в конце блока). Поведение при попытке освободить не выделенный блок не определено, но работать как надо точно не будет.
1
|
9 / 9 / 2
Регистрация: 11.08.2011
Сообщений: 66
|
|
13.02.2012, 21:15 [ТС] | 3 |
Но что тогда происходит в моем случае? Ничего? Или же что-то все-таки освобождается?
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
13.02.2012, 21:20 | 4 |
Происходит неопределенное поведение же) По идее ничего освобождаться не может.
2
|
9 / 9 / 2
Регистрация: 11.08.2011
Сообщений: 66
|
|
13.02.2012, 21:24 [ТС] | 5 |
Учту. А как пользоваться realloc для уменьшения количества выделенной памяти?
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
13.02.2012, 21:29 | 7 |
Preveter, задавать количество элементов меньше текущего, последние элементы просто отбрасываются.
0
|
13.02.2012, 21:32 | 8 |
Но имейте ввиду, что если вы делаете realloc asciiz-строки, то рискуете отбросить нуль-терминатор. По-этому после такого realloc имеет смысл выставлять последний байт новой строки в ноль.
0
|
13.02.2012, 21:32 | |
13.02.2012, 21:32 | |
Помогаю со студенческими работами здесь
8
Приведение любого двумерного массива к типу указатель на указатель Указатель на константную строку и имя массива как указатель Указатель на указатель массива для передачи в функцию/цикл Найти последний элемент массива R[K], величина которого находится в заданном диапазоне [a, b]; переставить его в середину массива Вставить элемент в середину массива Добавить элемент в середину массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |