![]() |
|
Модераторы: bsa |
![]()
|
|
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
||||
|
||||
| Kruger2 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.1.2011 Репутация: нет Всего: нет |
voral,
При вызове функции freeMemory программа рушится. Добавлено через 1 минуту и 29 секунд baldina, Посмотрел, код рабочий. Следовательно у меня вызов кривой. Добавлено через 2 минуты и 28 секунд Но нет освобождения памяти. И в примере выше при попытке высвободить память программа рушится. |
|||
|
||||
| voral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
На всякий случай
|
|||
|
||||
| Kruger2 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.1.2011 Репутация: нет Всего: нет |
Самое обидное что в книге кернигана и ричи 2 строки по динамическому распределению памяти, а у харви дейтела "как програмировать на си" вообще ничего)
Судя по содержанию вспоминают они о нем только в структурах |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
||||
|
||||
| voral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
тут и я немного прощелкал. Дело в том как передан параметр в inMemory. Пока сам руками не написал не осознал
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
||||
|
||||
| voral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
||||
|
||||
| voral |
|
||||||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
Итак, почему не работало варианте с фунцнкцией
Это вроде как раз у Кернигана нормально расписано. Параметры функции являются локальными переменными в этой функции. Т.е. в данном случае мы скоипировали значение переменной b в функции main в переменную Array функции inMemory. (т.е. NULL). Далее этой локальной переменной присвоили значение адреса выделеной malloc памяти и вышли из функции. Но этот адрес выделенной памяти не передался обратно в процедуру main. и b так и осталась равна NULL. Демонтрирую (количество звездочек снизил, чтоб не мешались)
Вывод:
Чтобы это обойти нужно передавать параметр не по значению, а по ссылке.
вывод:
Кстати до кучи. Наглядное пояснение, а можно ли не освобождать память. В примере выше убираю строку free(b). И натравливаю на бинарник утилиту для определения утечек valgrind
в использовании нпри выходе 8 байт в одном блоке был один аллок, 0 освобождений, 8 байт занято - это и есть вредная утечка памяти |
||||||||||||
|
|||||||||||||
| Kruger2 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.1.2011 Репутация: нет Всего: нет |
Спасибо. Почитаю ещё литературу, потом буду дальше вас мучить
|
|||
|
||||
| krot100500 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 26.12.2011 Репутация: нет Всего: нет |
Всем привет!)
Благодоря этой темке я слегка разобрался в указателях) за это вам почет и уважуха) Вообщем попал сюда как получил задание на курсач(такое-же как и у автора) ну вообщем вот мой код для массива 3 на3 можете сказать что тут не так плиз) я подозреваю что что-то с выводом функции, голову уже сломал всю
Добавлено через 4 минуты и 20 секунд
зачем тут операнд return? |
||||
|
|||||
| voral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
||||
|
||||
| voral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
Форматирование кода - неуд. Строка 13: Зачем? Строка 32: Что делает? Строка 51: в этой области видимости есть переменная. Память под массив не выделена и массив не заполнен. Этот массив в этой функции не имеет ни какого отношение к массиву в функции input Больше пока не смотрел..... Добавлено @ 10:34 В догонку массив a в функции input не имеет отношения к массиву a в функции main. Добавлено @ 10:36 А так же в конце программы не освобождается память. Это сообщение отредактировал(а) voral - 27.12.2011, 10:52 |
|||
|
||||
| voral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
кстати. Небольшой "секрет". Цикл в 10 строке тоже ни чего не делает.... Вообще. Если отключить оптимизацию просто посчитает до 3. Но ни чего не сделает из того, что вы ожидаете
|
|||
|
||||
| krot100500 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 26.12.2011 Репутация: нет Всего: нет |
ну вообщем функция void input -вводит массив, взят текс тупо из методички
void subzero -функция нахождение элемента ниже 0 и сумма всех элементов этой строки void out функция тоже взята из методы ) выводит массив заданый в inpute Добавлено через 5 минут и 54 секунды в исходники из методички я особо не разбирался просто коррекция под свой вариант) динамическое распределение памяти для меня лес темный(( примерно понял операнд малок( по Герберту Шилдту) но там не было сказано про освобождение памяти я об этом узнал тока тут) ЗЫ Voral свой код всегда узнать можно)) я взял твой код для статического распределения попытался в нем разобраться) вроде как понял что-то) непонял тока почему цикл тока для J есть (в comparline) Добавлено через 10 минут и 51 секунду ну вообщем как я понял из лекций прога в кратце будет иметь вид #include тут все необходимые библиотеки input{ввод масива с клавы} comp{кстрока=кстолбцу} subzero{вычисление суммы с отриц элементом} out{вывод на экран} main{в нем как раз обрашение на функции } |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |