144 / 88 / 23
Регистрация: 31.08.2016
Сообщений: 775
|
||||||
1 | ||||||
Динамическая память new и delete09.01.2019, 15:38. Показов 1229. Ответов 6
Метки нет (Все метки)
имеем след. ситуацию:
0
|
09.01.2019, 15:38 | |
Ответы с готовыми решениями:
6
Динамическая память new, delete Указатели и динамическая память new delete Когда высвобождается динамическая память без delete Азы: статическая память, динамическая память, автоматическая память |
112 / 91 / 31
Регистрация: 24.10.2018
Сообщений: 336
|
|
09.01.2019, 15:57 | 2 |
Не только смысла нет, но и неправильно, так как поведение не определено, два раза пытаешься освободить один и тот же блок. Программа может просто упасть. А так как оригинальный адрес из string потерялся после strcat, то еще и утечка памяти здесь есть, если нигде больше указатель на сохранялся.
0
|
144 / 88 / 23
Регистрация: 31.08.2016
Сообщений: 775
|
|||||||||||
10.01.2019, 09:26 [ТС] | 3 | ||||||||||
0
|
Супер-модератор
|
|
10.01.2019, 11:41 | 4 |
Тебе же написали, что у тебя будет утечка. Та память, которая была выделена под string в третьей строке, благополучно утечет, потому что после выполнения 4-ой строки у тебя string указывает вообще в другое место. На кой вообще понадобилось присваивать string-у результат выполнения операции конкатенации?
Я уж не говорю о том, что все эти пляски с Сишными строковыми функциями в Билдере выглядят убого, когда есть гораздо более мощные средства.
0
|
144 / 88 / 23
Регистрация: 31.08.2016
Сообщений: 775
|
||||||
10.01.2019, 13:49 [ТС] | 5 | |||||
в другое? проверим
0
|
Супер-модератор
|
||||||
10.01.2019, 14:00 | 6 | |||||
Првда. Но перед тем, как это делать, неплохо было бы почитать доку на функцию, не правда ли? А там сказано, что
0
|
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
|
12.01.2019, 11:06 | 7 |
Функция strcat дописывает source справа к destination. Она даже не проверяет достаточность памяти в destination для хранения результирующей строки. Если строки source и destination были сформированы с помощью new[], то их обе надо удалить, используя delete[].
PS: Вместо strcat лучше использовать strncat ИМХО.
0
|
12.01.2019, 11:06 | |
12.01.2019, 11:06 | |
Помогаю со студенческими работами здесь
7
Статическая память,Динамическая память. delete[] не освобождает память? Динамическая память Динамическая память Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |