|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.07.2009, 14:19 | #1 |
Регистрация: 05.07.2009
Сообщений: 6
|
malloc free Ошибка.
Добрый день. Проблема заключается следующем: в функцию передается указатель на динамический массив, функция создает новый динамический массив(с большей размерностью) и копирует содержимое старого. Дальше по идее надо освободить память, выделенную под старый массив - вот тут и возникает ошибка. Что я не так делаю? Подскажите пожалуйста. Пишу на си, visual 6.0
Код:
Последний раз редактировалось MaTBeu; 08.07.2009 в 15:23. |
05.07.2009, 15:33 | #2 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Что за ошибка то? И приведите часть когда, где создается переменная a и где вызывается функция
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
05.07.2009, 15:45 | #3 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Код:
Вместо этого: Код:
Код:
Код:
|
05.07.2009, 15:53 | #4 |
Регистрация: 05.07.2009
Сообщений: 6
|
Да, а как же быть с массивом а? он больше не нужен и память нужно освобождать, не так ли?
|
05.07.2009, 16:02 | #5 |
Регистрация: 05.07.2009
Сообщений: 6
|
Код:
|
05.07.2009, 16:14 | #6 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Вы пытаетесь удалить память, которая не выделенная под указатель.
Вообще-то это все так: Код:
|
05.07.2009, 16:28 | #7 |
Регистрация: 05.07.2009
Сообщений: 6
|
А возможно все же написать через malloc и free и чтобы удаление происходило в функции yvel ?
|
05.07.2009, 16:33 | #8 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Возможно через malloc, но разницы не вижу. Просто через new короче и проще. Нельзя очистить память под указатель *a так как вы под него в функции yvel её не выделяли.
Последний раз редактировалось profi; 05.07.2009 в 16:37. |
05.07.2009, 16:38 | #9 |
Регистрация: 05.07.2009
Сообщений: 6
|
Ясно, а если через malloc - то просто заменить new на malloc? Получается нельзя в одной функции удалить память, выделенную в другой? только в main'е ?
|
05.07.2009, 16:47 | #10 | ||
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Цитата:
указатель = new int[размер_массива]; Цитата:
|
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка:*** glibc detected *** free(): invalid next size (fast): 0x0807dc70 *** | ciaonataha | Общие вопросы C/C++ | 3 | 05.05.2009 16:58 |
Проблемы с выделением динамической памяти malloc (recalloc) | slips | Общие вопросы C/C++ | 6 | 29.04.2009 19:27 |
DLL. Ошибка при Form1.Free | Roof | Общие вопросы Delphi | 3 | 26.07.2008 01:21 |
Free Pascal(2.0.4) ошибка: Error while linking | Акашаев Нурлан | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 04.08.2007 10:10 |