Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопрос по очистке памяти new/delete / 7 сообщений из 7, страница 1 из 1
31.03.2013, 19:44
    #38206237
XMaSs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по очистке памяти new/delete
Каким образом можно очистить память в функции?
char* cpy(char* &str1)
{
char *word=new char[strlen(str1)];
for(int i=0;i<strlen(str1);i++)
word[i]=str1[i];
return(word);
}

void main()
{
char *str=new char[100000];
char *str2=new char[100000];
str="dadsadsadasd";
str2=cpy(str);
delete[] str;
delete[] str2;
}

те при каждом вызове cpy() выделяется память под word. а ее очистить, если идет return(word)?
...
Рейтинг: 0 / 0
31.03.2013, 19:48
    #38206241
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по очистке памяти new/delete
XMaSsdelete[] str2;
Память, выделенную под word ты как раз освобождаешь, а вот выделение str2 у тебя не
освобождается (и не используется). Можешь его вообще убрать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
31.03.2013, 20:15
    #38206258
XMaSs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по очистке памяти new/delete
Dimitry Sibiryakov,

Спасибо, а если еще там есть выделение памяти под str3
char* cpy(char* &str1)
{
char *word=new char[strlen(str1)];
char *str3=new char[strlen(str1)+1];
for(int i=0;i<strlen(str1);i++)
{
if (i>0)
{str3[i-1]=str1[i]}
word[i]=str1[i];
}
int i=strlen(str1);
word[i]='\0';
str1[i-1]='\0';
str1=str3
return(word);
}
...
Рейтинг: 0 / 0
31.03.2013, 20:18
    #38206261
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по очистке памяти new/delete
XMaSs,

Тогда ты теряешь начальный str1
...
Рейтинг: 0 / 0
31.03.2013, 20:19
    #38206262
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по очистке памяти new/delete
Если ты не в состоянии контролировать поток выполнения своей программы, то используй STL
классы с автоматическим подсчётом ссылок.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
31.03.2013, 20:22
    #38206263
XMaSs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по очистке памяти new/delete
White Owl,

теряю данные... да... но в этом и суть
но суть в том что мне нужен был другой strtok(...)
я его написал, но при каждом запуске он выделяет память, а где ее очистить я не пойму
пример strtokа не привел, там очень закрученный код, но суть такая, что изменяется начальная строка и достается какая-то информация
...
Рейтинг: 0 / 0
01.04.2013, 00:25
    #38206420
XMaSs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по очистке памяти new/delete
Итого методом научного втыкивания)):
в данном случае надо заменить
str1=str2 на
sprintf(str1,"%s",str2);
тогда str2 нам не нужен и тогда можно
delete[] str2

Но всем спасибо!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопрос по очистке памяти new/delete / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]