Форум программистов, компьютерный форум CyberForum.ru

Будет ли утечка памяти при выполнении данного кода? - C++

Восстановить пароль Регистрация
 
stv
26 / 26 / 6
Регистрация: 05.03.2010
Сообщений: 171
01.06.2010, 17:41     Будет ли утечка памяти при выполнении данного кода? #1
собстна, сабж.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char* cpy(char* source, int pos, int kolv)
{
    char* dist = new char[kolv+1];
    for(int i=pos; i < pos+kolv; i++)
        dist[i-pos] = source[i];
    dist[kolv] = NULL;
    return dist;
}
int main()
{
    char st[] = "012345789"; 
    char* s = cpy(st, 0, 3);
    cout << s << endl;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2010, 17:41     Будет ли утечка памяти при выполнении данного кода?
Посмотрите здесь:

C++ утечка памяти при сложении разноразмерных матриц
Что будет выведено на экран при выполнении следующей программы C++
C++ Какое значение будет выведено при выполнении операторов?
какое значение будет выведено при выполнении операторов C++
Каким будет результат компиляции и выполнения данного кода? C++
C++ Каким будет результат компиляции и выполнения данного кода?
Что будет выведено на экран при выполнении следующего фрагмента программы C++
Что будет выведено на экран при выполнении следующей программы при n = 5 ? C++
C++ Утечка памяти при удалении
C++ Утечка памяти при создании динамической переменной класса
C++ Утечка памяти при использовании хука

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,315
01.06.2010, 18:13     Будет ли утечка памяти при выполнении данного кода? #2
1. Будет
2. в 1-й строке должно быть const char* source
3. в 6-й строке должно быть dist[kolv] = 0 или = '\0', но не NULL
stv
26 / 26 / 6
Регистрация: 05.03.2010
Сообщений: 171
01.06.2010, 18:22  [ТС]     Будет ли утечка памяти при выполнении данного кода? #3
Можно ли както написать функцию, возвращающую часть строки (указатель на начало этой самой части) без утечки?
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,315
01.06.2010, 21:45     Будет ли утечка памяти при выполнении данного кода? #4
Можно, разумеется. У тебя почти все правильно написано.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char* cpy(const char* source, int pos, int kolv)
{
        char* dist = new char[kolv+1];
        for(int i=pos; i < pos+kolv; i++)
                dist[i-pos] = source[i];
        dist[kolv] = '\0';
        return dist;
}
int main()
{
        char st[] = "012345789"; 
        char* s = cpy(st, 0, 3);
        cout << s << endl;
        delete[] s;          // вот тут надо освободить память...
        return 0;
}
Yandex
Объявления
01.06.2010, 21:45     Будет ли утечка памяти при выполнении данного кода?
Ответ Создать тему
Опции темы

Текущее время: 16:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru