Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
Модератор: Лучше плодить темы, чем поднимать. А вот в этом случае память течет или нет? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Т.е. есть некая функция-конвертер, которая внутри создает новую строку, потом возвращает на нее указатель. Вызов этой функции я делаю только внутри вызовов других (ну как в printf), т.е. значение указателя ничему не присваивается. Память будет освобождаться или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 20:52 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
Потечет. Каждому new должен быть в конце delete, иначе память занята до конца работы приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 20:59 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
Лучше используй string тогда проблем с памятью не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 21:00 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
Отвечаем. DeviLooper А вот в этом случае память течет или нет? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. В этом случае память течёт. DeviLooperТ.е. есть некая функция-конвертер, которая внутри создает новую строку, потом возвращает на нее указатель. Вызов этой функции я делаю только внутри вызовов других (ну как в printf), т.е. значение указателя ничему не присваивается. Память будет освобождаться или нет? Память НЕ будет освобождаться . Ты должен освобождать её самостоятельно, или доверить её выделение и освобождение специальным классам. Например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 21:02 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
Dima Tиспользуй string string, конечно, вещь удобная, но уж слишком раздувает бинарник. Vector в этом плане выглядит привлекательнее. MasterZiv, вот только я не понял а вектор в этом случае когда будет память освобождать? Тоже при завершении программы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 21:49 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
DeviLooperstring, конечно, вещь удобная, но уж слишком раздувает бинарник. С чего бы этому мелкому макросу бинарник раздувать?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 22:07 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
MasterZivПамять НЕ будет освобождаться . Ты должен освобождать её самостоятельно, это совершенно нормальное соглашение - память, занятую результатом, явно освобождает вызывающий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 22:08 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovС чего бы этому мелкому макросу бинарник раздувать?.. Ну если использовать <iostream>, то не заметно, только тут изначально 500кб бинарник. Я <stdio.h> юзаю, так что <string> раздувает бинарник со 130кб, до 500 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 22:27 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
DeviLooperизначально 500кб бинарник. 400 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 22:28 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
DeviLooperDima Tиспользуй string string, конечно, вещь удобная, но уж слишком раздувает бинарник. Vector в этом плане выглядит привлекательнее. MasterZiv, вот только я не понял а вектор в этом случае когда будет память освобождать? Тоже при завершении программы? конкретно тут при выходе из printf. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 22:36 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
ИзопропилMasterZivПамять НЕ будет освобождаться . Ты должен освобождать её самостоятельно, это совершенно нормальное соглашение - память, занятую результатом, явно освобождает вызывающий 0) мне кажется, что это абсолютно НЕнормальная ситуация, когда вызывающему надо еще о чем-то думать после вызова. 1) в его коде он ничего НЕ освобождал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 22:41 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
MasterZivмне кажется, что это абсолютно НЕнормальная ситуация, когда вызывающему надо еще о чем-то думать после вызова. а кто кроме вызывающего знает, как долго ему нужен результат вызова? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 22:48 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
Согласно спеке printf возвращает количество символов или негативное целое (статус ошибки). Но если-бы он пробрасывал в качестве retval свой первый аргумент назад то можно было бы попробовать в 1 строчку. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 22:53 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
MasterZivИзопропилпропущено... это совершенно нормальное соглашение - память, занятую результатом, явно освобождает вызывающий 0) мне кажется, что это абсолютно НЕнормальная ситуация, когда вызывающему надо еще о чем-то думать после вызова. 1) в его коде он ничего НЕ освобождал. да как бы нормально вызывающему коду как раз думать и о выделении и о удалении :-) был правда фокус с локальной переменной, но он потоконебезопасен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 23:52 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
Я че-то подумал и сделал вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. По идее нормально же все будет работать? Вложенных вызовов не планирую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2016, 00:31 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
DeviLooper, с точки зрения полезного действия всё что ты делаешь это просто форматирование имени файла. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2016, 01:11 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
mayton, не... На самом деле функция другая, там происходит некое преобразование входной строки и выдается результат. Это я для простоты такой пример привел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2016, 01:16 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
DeviLooperЯ че-то подумал и сделал вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. По идее нормально же все будет работать? Вложенных вызовов не планирую. Вы уверены, что данный участок кода будет работать так, как вы вероятно полагаете? Мне кажется вы немного намудрили с ctrl+x, ctrl+v ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2016, 02:20 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
DeviLooper, для чего вы используете квалификатор static? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2016, 02:26 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
DeviLooper, Назовите хоть одну причину, чтобы использовать тут С-строки а не std::string? Только не говорите что вам эту функцию надо вызывать миллионы раз в секунду, поэтому каждый такт важен Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2016, 02:30 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryдля чего вы используете квалификатор static? Для многократного вызова этой функции внутри вызова других. static нужен для сохранения указателя, чтобы при следующем вызове этой функции память, выделенная под предыдущий результат очищалась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2016, 02:31 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, я уже отвечал - функция на самом деле не такая простая и преобразований входной строки там гораздо больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2016, 02:33 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
DeviLooper , тоесть мы щас играемся в игрушки. А настоящую функцию ты зажал и кормишь нас какими-то нелепыми синтетическими постановками. И как-ты полученный опыт перенесёшь на свою волшебную функцию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2016, 02:45 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
mayton, ну суть вопроса-то была в очистке памяти при подобном вызове, а не в оптимизации моей функции :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2016, 03:14 |
|
||
|
Память будет освобождаться или нет?
|
|||
|---|---|---|---|
|
#18+
DeviLooperЯ че-то подумал и сделал вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. По идее нормально же все будет работать? Вложенных вызовов не планирую. будет работать, тут только не нарвись на такое Код: plaintext 1. Ошибок не будет, просто выведется второе дважды. проверку добавь и скобки Код: plaintext 1. А лучше на realloc() переделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2016, 07:10 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39277406&tid=2018467]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 278ms |
| total: | 436ms |

| 0 / 0 |
