![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 05.07.2009
Сообщений: 6
|
![]()
Добрый день. Проблема заключается следующем: в функцию передается указатель на динамический массив, функция создает новый динамический массив(с большей размерностью) и копирует содержимое старого. Дальше по идее надо освободить память, выделенную под старый массив - вот тут и возникает ошибка. Что я не так делаю? Подскажите пожалуйста. Пишу на си, visual 6.0
Код:
Последний раз редактировалось MaTBeu; 08.07.2009 в 15:23. |
![]() |
![]() |
![]() |
#2 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
![]()
Что за ошибка то? И приведите часть когда, где создается переменная a и где вызывается функция
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
![]() |
![]() |
![]() |
#3 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
![]() Код:
Вместо этого: Код:
Код:
Код:
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 05.07.2009
Сообщений: 6
|
![]()
Да, а как же быть с массивом а? он больше не нужен и память нужно освобождать, не так ли?
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 05.07.2009
Сообщений: 6
|
![]() Код:
|
![]() |
![]() |
![]() |
#6 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
![]()
Вы пытаетесь удалить память, которая не выделенная под указатель.
Вообще-то это все так: Код:
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 05.07.2009
Сообщений: 6
|
![]()
А возможно все же написать через malloc и free и чтобы удаление происходило в функции yvel ?
|
![]() |
![]() |
![]() |
#8 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
![]()
Возможно через malloc, но разницы не вижу. Просто через new короче и проще. Нельзя очистить память под указатель *a так как вы под него в функции yvel её не выделяли.
Последний раз редактировалось profi; 05.07.2009 в 16:37. |
![]() |
![]() |
![]() |
#9 |
Регистрация: 05.07.2009
Сообщений: 6
|
![]()
Ясно, а если через malloc - то просто заменить new на malloc? Получается нельзя в одной функции удалить память, выделенную в другой? только в main'е ?
|
![]() |
![]() |
![]() |
#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 |