Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Объявляю массив в цикле, что будет происходить при каждом шаге? Очистится ли уже ненужный и создастся новый буфер ? Не будет ли утечки? Здесь бывают случаи когда буфер может быть не полностью забит, а только какая та его часть. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 14:46 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Не будет утечки. Память будет выделена в стэке во время компиляции . Буфер будет один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 14:49 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Картежник, не обнуляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 14:50 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Dima TНе будет утечки. Память будет выделена в стэке во время компиляции . Буфер будет один. ок значит получается если на втором(len2) этапе цикла будет получено меньше данных чем в первом(len1), то то в массиве после данных второго этапа останутся не затертые данные из первого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 14:51 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Картежник, да даже и на первой итерации в буфере будет случайный мусор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 14:54 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Картежник, 1) На каждой итерации цикла вы имеете дело с новым массивом содержащим мусор (содержит ли этот мусор куски предыдущих массивов совершенно не важно - это просто мусор) 2) Утечек никаких нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 14:57 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
КартежникDima TНе будет утечки. Память будет выделена в стэке во время компиляции . Буфер будет один. ок значит получается если на втором(len2) этапе цикла будет получено меньше данных чем в первом(len1), то то в массиве после данных второго этапа останутся не затертые данные из первого? Скорее всего так и будет, это на усмотрение компилятора, теоретически он может давать разные куски памяти, но технически ему проще всего давать каждый раз один и тот же кусок. Кроме того учти что при первом проходе там будет не пусто (нули), а какой-то мусор. Т.к. локальные переменные не инициализируются автоматом. Формально после каждого прохода массив buf выходит за область его видимости, уничтожается и создается заново в начале следующего прохода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 15:00 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Проверяется элементарно: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 15:03 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Dima TПроверяется элементарно: Вы же понимаете, что если вы постучали в бубен, и после того пошел дождь, то это не значит что каждый раз после бубна будет дождь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 15:25 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
КартежникDima TНе будет утечки. Память будет выделена в стэке во время компиляции . Буфер будет один. ок значит получается если на втором(len2) этапе цикла будет получено меньше данных чем в первом(len1), то то в массиве после данных второго этапа останутся не затертые данные из первого? Да. Такое возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 17:52 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Картежник, вам всё правильно сказали (память выделится в стеке, утечки не будет, т.к. массив не инициализирован - в нём мусор. После первой итерации там вполне возможно - и скорее всего - будут "старые данные с предыдущей итерации", но это не гарантируется). От себя добавлю - вы случайно можете выйти за пределы массива. Картежник Код: plaintext 1. 2. 3. 4. 5. если n окажется больше MAX_BUF_SIZE - 1. Компилятор по этому поводу не ругнётся. Если ограничитесь только чтением, то даже работать почти наверняка будет ( получая "левые" данные). Если попробуете писать (много) - скорее всего скрэшится по доступу к памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 22:34 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
BagaBagaОт себя добавлю - вы случайно можете выйти за пределы массива. если n окажется больше MAX_BUF_SIZE - 1. А Вас не смущает, что i никогда не применяется к buf, а только к совсем другим массивам?.. То, что размер принятых данных аффтар совершенно игнорирует (очевидно, наивно полагая, что буфер всегда принимается сразу и полностью) - совсем другой вопрос. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 22:54 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
BagaBagaОт себя добавлю - вы случайно можете выйти за пределы массива. если n окажется больше MAX_BUF_SIZE - 1. Компилятор по этому поводу не ругнётся. Если ограничитесь только чтением, то даже работать почти наверняка будет ( получая "левые" данные). Если попробуете писать (много) - скорее всего скрэшится по доступу к памяти. Dimitry SibiryakovА Вас не смущает, что i никогда не применяется к buf, а только к совсем другим массивам?.. То, что размер принятых данных аффтар совершенно игнорирует (очевидно, наивно полагая, что буфер всегда принимается сразу и полностью) - совсем другой вопрос. вы оба не поняли что за массивы sock и buf,для чего они и т.д. и что n относится к sock, а MAX_BUF_SIZE к buf и они не зависят друг от друга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 06:13 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
думаю решение простое. сам не понял как массив у меня оказался внутри цикла, видимо копипаст Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 06:22 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovА Вас не смущает, что i никогда не применяется к buf, а только к совсем другим массивам?.. То, что размер принятых данных аффтар совершенно игнорирует (очевидно, наивно полагая, что буфер всегда принимается сразу и полностью) - совсем другой вопрос. ой извиняюсь, как раз вы все правильно сказали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 06:29 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Картежникдумаю решение простое. сам не понял как массив у меня оказался внутри цикла, видимо копипаст Код: plaintext 1. 2. 3. 4. 5. 6. а от такого перемещения ничего не меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 07:27 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Картежникдумаю решение простое. сам не понял как массив у меня оказался внутри цикла, видимо копипаст Код: plaintext 1. 2. 3. 4. 5. 6. Ну вот теперь-то len точно может (специально или по недосмотру) превзойти MAX_BUF_SIZE-1. И даже стать отрицательным :). ЗЫ Да, в прошлый раз невнимательно посмотрел. Но в любом случае размер приёмника и источника лучше проверять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 11:22 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
BagaBagaКартежникдумаю решение простое. сам не понял как массив у меня оказался внутри цикла, видимо копипаст Код: plaintext 1. 2. 3. 4. 5. 6. Ну вот теперь-то len точно может (специально или по недосмотру) превзойти MAX_BUF_SIZE-1. И даже стать отрицательным :). ЗЫ Да, в прошлый раз невнимательно посмотрел. Но в любом случае размер приёмника и источника лучше проверять. аха, понял, переделаю так Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 12:07 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Картежникаха, понял Нихрена ты не понял. Открой уже справку по recv() и посмотри что он может возвращать. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 13:00 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovКартежникаха, понял Нихрена ты не понял. Открой уже справку по recv() и посмотри что он может возвращать. ну я так думаю что recv() возвращает кол-во полученных символов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 14:47 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Картежникя так думаю Думать вредно. Читай доку. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 15:08 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
КартежникDimitry Sibiryakovпропущено... Нихрена ты не понял. Открой уже справку по recv() и посмотри что он может возвращать. ну я так думаю что recv() возвращает кол-во полученных символов он 0 может вернуть и -1, это надо обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 15:10 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Dima Tон 0 может вернуть и -1, это надо обрабатывать. Более того, он вообще может не вернуть ничего. Если не отключен SIGPIPE )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 15:14 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Dima TКартежникпропущено... ну я так думаю что recv() возвращает кол-во полученных символов он 0 может вернуть и -1, это надо обрабатывать. аха это я начал обрабатывать, 0 - значит отключен, делаю disconnect(sock[i]);sock[i]=-1; -1 - ничего не пришло. вот если я отключаю клиент после первого send, то на сервер продолжает приходить -1. если я на сервере буду дисконектить сокет клиента после получения -1, то возможно когда клиент еще не успел выполнить первый send он будет отключен. как узнать когда клиент отключился? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 16:01 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Картежниккак узнать когда клиент отключился? может все-таки послушать советы Dimitry SibiryakovДумать вредно. Читай доку. и начать читать как ошибки обрабатывать? https://www.google.ru/search?q=recv() https://msdn.microsoft.com/en-us/library/windows/desktop/ms740121(v=vs.85).aspx http://www.opennet.ru/man.shtml?topic=recv&category=2&russian=0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 16:09 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Объекты объявленные в теле цикла являются автоматическими, это так. И потому они действительно должны автоматически уничтожиться, не вызывая утечек. Но как это должно наверняка происходить в цикле ? 1. Либо, как говорит Анатолий (возможно это соответствует стандарту), на каждой итерации цикла будет создаваться новый объект, путь даже по тому-же адресу 2. Либо объект будет создан один раз, и уничтожится после завершения всех итераций цикла (о чём говорил Дмитрий, и что логичнее). Верно ли, что поведение 2 будет гарантировать квалификатор static ? Кстати, в Си и в С++ static несет аналогичное значение ? Мне так не показалось, но видимо что-то не так понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 03:34 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
И только ли от стандарта зависит поведение в данном случае ? Т.е. на всех ли компиляторах поведение будет аналогичным ? На всех ли компиляторах поведение должно быть аналогичным ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 03:38 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНо как это должно наверняка происходить в цикле ? 1. Либо, как говорит Анатолий (возможно это соответствует стандарту), на каждой итерации цикла будет создаваться новый объект, путь даже по тому-же адресу 2. Либо объект будет создан один раз, и уничтожится после завершения всех итераций цикла (о чём говорил Дмитрий, и что логичнее). Компилятор имеет право повторно использовать один физический объект в данном случае, т.к. никаких побочных эффектов создание и удаление не инициализированного массива на стеке не имеет (поведение программы не меняется от этого). SashaMercuryВерно ли, что поведение 2 будет гарантировать квалификатор static ? Кстати, в Си и в С++ static несет аналогичное значение ? Мне так не показалось, но видимо что-то не так понял Нет, static это вообще другое, это глобальный объект с локальной областью видимости. В С++ то же самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 04:06 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Встретил такой пример, у BS A local variable is initialized when the thread of execution reaches its definition. By default, this happens in every call of the function and each invocation of the function has its own copy of the variable. If a local variable is declared ss t taa t tii c c, a single, statically allocated object will be used to represent that variable in all calls of the function. It will be initialized only the first time the thread of execution reaches its definition. For example: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... A static variable provides a function with ‘‘a memory’’ without introducing a global variable that might be accessed and corrupted by other functions (see also §10.2.4). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 04:23 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВстретил такой пример, у BS ... Разбери этот код, будет понятнее что такое static Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 07:04 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Dima TКартежниккак узнать когда клиент отключился? может все-таки послушать советы Dimitry SibiryakovДумать вредно. Читай доку. и начать читать как ошибки обрабатывать? https://www.google.ru/search?q=recv() https://msdn.microsoft.com/en-us/library/windows/desktop/ms740121(v=vs.85).aspx http://www.opennet.ru/man.shtml?topic=recv&category=2&russian=0 теперь вроде бы работает как надо Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 07:35 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Картежниктеперь вроде бы работает как надо Код: plaintext 1. Внимательно читай https://msdn.microsoft.com/en-us/library/windows/desktop/ms740121(v=vs.85).aspx Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 07:40 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryОбъекты объявленные в теле цикла являются автоматическими, это так. И потому они действительно должны автоматически уничтожиться, не вызывая утечек. Цикл тут не при чём. Для объектов, размещённый на стеке, конструктор и деструктор вызываются автоматически, выделение памяти происходит на этапе компиляции (это значит, что если в системе на хватит памяти, исполняемый файл просто не запустится с ошибкой памяти). SashaMercuryНо как это должно наверняка происходить в цикле ? SashaMercury, честно говоря, Вы можете это спокойно проверить порядок вызова конструкторов-деструкторов для конкретной единицы компиляции. Написать простенький тест. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Ещё надёжнее посмотреть ассемблер, но это здесь лишнее. К стати, если убрать строчку t.i = i;, результаты могут решительно поменяться :) В прочем, не столь решительно они всё равно могут поменяться в зависимости от настроек компилятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 08:57 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Дмитрий, Анатолий, спасибо. Теперь окончательно понял, глобальный объект с локальной областью видимости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 13:29 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
КартежникОбъявляю массив в цикле, что будет происходить при каждом шаге? Очистится ли уже ненужный и создастся новый буфер ? Не будет ли утечки? Здесь бывают случаи когда буфер может быть не полностью забит, а только какая та его часть. Код: plaintext 1. 2. 3. 4. 5. 1. в этом цикле, buf автоматический объект ? (считаю что да) 2. Согласно стандарту он должен создавать на каждой итерации, и уничтожаться в конце каждой итерации ? (не знаю) 3. Было бы быстрее если бы объект buf был создан один раз и уничтожен при выходе из цикла ? (считаю что да) 4. Если поведение по пункту 2, то лучше объявить buf с квалификатором static ? (считаю да) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 13:33 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryКартежникОбъявляю массив в цикле, что будет происходить при каждом шаге? Очистится ли уже ненужный и создастся новый буфер ? Не будет ли утечки? Здесь бывают случаи когда буфер может быть не полностью забит, а только какая та его часть. Код: plaintext 1. 2. 3. 4. 5. 1. в этом цикле, buf автоматический объект ? (считаю что да) 2. Согласно стандарту он должен создавать на каждой итерации, и уничтожаться в конце каждой итерации ? (не знаю) 3. Было бы быстрее если бы объект buf был создан один раз и уничтожен при выходе из цикла ? (считаю что да) 4. Если поведение по пункту 2, то лучше объявить buf с квалификатором static ? (считаю да)1. да 2. да 3. да 4. нет, лучше объявить buf перед циклом, статик здесь совершенно ни к чему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 13:48 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
egorychSashaMercuryпропущено... 1. в этом цикле, buf автоматический объект ? (считаю что да) 2. Согласно стандарту он должен создавать на каждой итерации, и уничтожаться в конце каждой итерации ? (не знаю) 3. Было бы быстрее если бы объект buf был создан один раз и уничтожен при выходе из цикла ? (считаю что да) 4. Если поведение по пункту 2, то лучше объявить buf с квалификатором static ? (считаю да)1. да 2. да 3. да 4. нет, лучше объявить buf перед циклом, статик здесь совершенно ни к чему egorych, ответ на пункт (3) в данном случае -- НЕТ (в общем случае -- ДА). Я уверен, ты просто описался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:00 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
egorych, но если buf объявлен внутри цикла, и мы его не выносим, установка данного объекта в static даст выигрыш по времени ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:05 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
MasterZivegorych, ответ на пункт (3) в данном случае -- НЕТ (в общем случае -- ДА). Я уверен, ты просто описался.да, MasterZiv, спасибо за поправку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:09 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
А почему в данном случае ответ на пункт 3 должен быть отрицательным ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:09 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryegorych, но если buf объявлен внутри цикла, и мы его не выносим, установка данного объекта в static даст выигрыш по времени ? По времени выигрыша не будет, наоборот. Если массив инициируется, это происходит один раз. После инициализации массив не деинициализируется (потому что это POD). Небольшой проигрыш будет при наличии инициализатора из-за проверки, инициализирована ли уже переменная. Впрочем, я уверен, оптимизирующий компилятор это достаточно хорошо оформит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:10 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryegorych, но если buf объявлен внутри цикла, и мы его не выносим, установка данного объекта в static даст выигрыш по времени ?так рассуждая, мы стремительно дойдём до того, что локальные переменные не нужны, и все данные будем хранить только в глобальных объектах ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:11 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Т.е. мы не будем иметь поведение, которые мы должны иметь согласно стандарту ? Массив не будет создаваться и уничтожаться на каждой итерации цикла ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:12 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryА почему в данном случае ответ на пункт 3 должен быть отрицательным ? автор3. Было бы быстрее если бы объект buf был создан один раз и уничтожен при выходе из цикла ? (считаю что да) В данном случае этот массив-буфер находится в стеке и ни на его создание, ни на его удаление (деинициализацию) не тратится ничего. Стоимость его инициализации -- 0, деинициализации -- тоже 0. Поэтому место его объявления влияет только на область видимости переменной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:15 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryно если buf объявлен внутри цикла, и мы его не выносим, установка данного объекта в static даст выигрыш по времени ? Нет, т.к. для этого в обоих случаях никаких операций не выполняется во время работы программы. При работе программы не происходит никакого выделения памяти для явно объявленных переменных. Хоть глобальных, хоть локальных. Этим занимается компилятор. static хуже тем что будет занимать память на протяжении всего времени работы программы и требует инициализации при старте программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:17 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryТ.е. мы не будем иметь поведение, которые мы должны иметь согласно стандарту ? Массив не будет создаваться и уничтожаться на каждой итерации цикла ? Будет. Но выигрыша не будет. Потому что это POD, создание и уничтожение -- пустые операции. Кроме того (и вообще это самое главное) static и auto имеют важные семантические различия -- время инициализации и жизни и потокобезопасность катастрофически разные, поэтому обычно вопрос заменять одно на другое из-за скорости вообще не стоит -- семантика определяющая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:18 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
У меня остался один вопрос. Как можно создать и удалить объект за t=0 ? Насчёт удалить понимаю, такой операции видимо даже не будет, просто компилятор не вспомнит что по этому адресу что-то расположено. Но как он может выделить память за нулевое время, не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 14:36 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryУ меня остался один вопрос. Как можно создать и удалить объект за t=0 ? Насчёт удалить понимаю, такой операции видимо даже не будет, просто компилятор не вспомнит что по этому адресу что-то расположено. Но как он может выделить память за нулевое время, не понимаю. так можно и скорость света превысить Оно нулевое там где ты смотришь, но выделение памяти все-таки происходит, но при старте программы: выделяется один большой кусок под все переменные, он называется стэк. В стэке компилятор распределяет место под хранение содержимого переменных. "Область видимости" определяет когда занята конкретная ячейка в стэке. Т.е. просто компилятор отслеживает чтобы место занятое переменной не использовалось другими переменными пока она в области видимости. В эти моменты выделение/освобождение памяти не происходит, при объявлении переменной вообще ничего не происходит во время выполнения. Запусти в релизе Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. у меня такой результатa 0012FF74 b 0012FF78 c 0012FF78 c=2 т.е. место где хранилась b стало ненужным и это же место использовано под c а т.к. я забыл инициализировать с, то там оказалось то что было в b ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 15:23 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Отличный пример. Спасибо :) 1. Стек ограничен ?(думаю да) 2. Происходит ли проверка во время раздачи адресов объектам ? Просим мы адрес на буфер из 1000 целых, хранитель стека мне даст любой адрес, или проверит, есть ли в стеке столько памяти ? Вероятно проверит 3. Раздача этих адресов происходит во время выполнения, или во время компиляции ? Видимо во время компиляции. Тогда всё понятно. Верно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 15:36 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Дима, у меня вот что SS test rel outa 003DFA68 b 003DFA64 c 003DFA64 c=2 странно что отскочил назад, а у тебя вперёд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 15:38 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryстранно что отскочил назад, а у тебя вперёд Некоторые компиляторы размещают переменные в памяти в порядке обратном их объявлению. Некоторые вообще произвольно. Так что вы на порядок не рассчитывайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 15:44 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Меня уже гонят.. Спасибо, сегодня я узнал много нового, а самое главное интересного C: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 15:57 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryОтличный пример. Спасибо :) 1. Стек ограничен ?(думаю да) 2. Происходит ли проверка во время раздачи адресов объектам ? Просим мы адрес на буфер из 1000 целых, хранитель стека мне даст любой адрес, или проверит, есть ли в стеке столько памяти ? Вероятно проверит 3. Раздача этих адресов происходит во время выполнения, или во время компиляции ? Видимо во время компиляции. Тогда всё понятно. Верно ? 1. Размер стэка задается в параметрах вызова компилятора. 2,3. Я компиляторов не писал, только в общих чертах представляю как они устроены, поэтому далее могу ошибаться. Выше рассматривали использование стэка внутри функций, но есть еще один нерассмотренный момент - вызов функций. Происходит примерно следующее: во время компиляции определяется сколько места в стэке надо для работы функции, а при ее вызове ей это место дается (память не выделяется, просто дается следующий свободный кусок требуемого размера). В какой-то момент стэк закончится и будет обращение по адресу за пределами стэка. Например при рекурсии невозможно определить во время компиляции сколько раз функция вызовет сама себя. Но при компиляции функции адреса хранения переменных постоянные, просто они задаются относительно начала того самого блока памяти выделенного в стэке перед вызовом функции. По сути адрес состоит из двух частей: адреса начала блока и смещения. Хочешь более глубокого изучения этой темы - это надо ассемблер изучать. Пример как в рекурсии выйти за пределы стэка Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 17:30 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Ты бы всё же книжки читал, а не по форумам шастал. Форум хорошо, когда что-то не понял и застрял. А изучать что-то по форумам невозможно. SashaMercuryУ меня остался один вопрос. Как можно создать и удалить объект за t=0 ? Насчёт удалить понимаю, такой операции видимо даже не будет, просто компилятор не вспомнит что по этому адресу что-то расположено. Но как он может выделить память за нулевое время, не понимаю. Ну, изучи как стек работает. На самом деле там действительно ноль. Есть sp (вершина стека), она при входе в функцию увеличивается (или уменьшается) на размер всех переменных в функции, и далее у каждой переменной адрес -- это вершина стека + смещение к переменной ( определяется в процессе компиляции ). А дальше весь код работы с переменной просто работает со своим куском памяти так, как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 19:02 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, не упрощай :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 23:17 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, нет у меня времени изучать больше книг в этом году. Мне нравится Си и кажется интересным С++, это я изучаю. Возникают смежные вопросы. Нет времени не потому что лень, а потому что именно в этом году у меня 6-8 часов в день математика. Сейчас изучаю Кнута, и BS. Заканчиваю изучать Анализ программного кода. Когда закончу одну из трёх, начну Таненбаума. Правда нет времени, не ругайтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2015, 04:02 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryСейчас изучаю Кнута, и BS. Заканчиваю изучать Анализ программного кода. Когда закончу одну из трёх, начну Таненбаума. Правда нет времени, не ругайтесь. Вот Кнута брось. Можешь вообще выкинуть книгу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2015, 19:27 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
MasterZivВот Кнута брось. Можешь вообще выкинуть книгу. Он же математик. Ему Кнут - самое то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2015, 19:28 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНет времени не потому что лень, а потому что именно в этом году у меня 6-8 часов в день математика. Сейчас изучаю Кнута, и BS. В какой конторе у бакалавров 6-8 часов ежедневно математика? Просто любопытно. Обычно у баков всего не более трёх пар в день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2015, 23:53 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
MasterZivSSСейчас изучаю Кнута, и BS. Заканчиваю изучать Анализ программного кода. Когда закончу одну из трёх, начну Таненбаума. Правда нет времени, не ругайтесь. Вот Кнута брось. Можешь вообще выкинуть книгу. Я уверен, вы просто описались PS Это ведь не Донцова или Фленов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2015, 02:07 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryMasterZivпропущено... Вот Кнута брось. Можешь вообще выкинуть книгу. Я уверен, вы просто описались PS Это ведь не Донцова или Фленов Возможно я озвучу некое среднее мнение среди модераторов. Обсуждение Кнута без линии С/С++ мы будем считать оффтопом в этом форуме. Безусловно старина Дональд умный и интересный автор. Но линия обсуждения должна быть актуальной и интересной для сообщества. Разводить блоги или дискурсы на математиков 9000 левела мы считаем предметом сторонним и не имеющем отношения к клиент-серверным технологиям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2015, 13:21 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyMasterZivВот Кнута брось. Можешь вообще выкинуть книгу. Он же математик. Ему Кнут - самое то. Да если он ещё Кнута читать будет, то это -- всё, до пенсии. Кнут -- удивительная зануда, удивительный крючкотвор и буквоед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2015, 19:16 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryMasterZivпропущено... Вот Кнута брось. Можешь вообще выкинуть книгу. Я уверен, вы просто описались PS Это ведь не Донцова или Фленов Нет, я не описался. Я тебе категорически не рекомендую читать Кнута без нужды (в смысле -- если там какой-то алгоритм нужный описан, и его нигде больше нет). И никому не рекомендую. Полно на эту же тему (алгоритмы) других толковых, но более лёгких книжек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2015, 19:18 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
MasterZivДа если он ещё Кнута читать будет, то это -- всё, до пенсии. Я так понял что программистом он не собирается быть. А чисто для общего развития можно читать что угодно )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2015, 19:29 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Dima TКартежниккак узнать когда клиент отключился? может все-таки послушать советы Dimitry SibiryakovДумать вредно. Читай доку. и начать читать как ошибки обрабатывать? https://www.google.ru/search?q=recv() https://msdn.microsoft.com/en-us/library/windows/desktop/ms740121(v=vs.85).aspx http://www.opennet.ru/man.shtml?topic=recv&category=2&russian=0 Я прошу прошения , не знаю кто писал эту доку но ИМХО лучше сразу делать правильно через SO_ERROR, errno, strerror(errno) Например : Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 21:06 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyКартежник, 1) На каждой итерации цикла вы имеете дело с новым массивом содержащим мусор (содержит ли этот мусор куски предыдущих массивов совершенно не важно - это просто мусор) 2) Утечек никаких нет. А если бы у него было так: Код: plaintext 1. 2. 3. 4. 5. При этом реализация класса нам неизвестна. Насколько вообще законна такая конструкция и будет ли утечка памяти? PS Я полагаю что это плохой участок кода, но хотел бы уточнить. Здесь вероятно правильней проводить реинициализацию без использования new, один раз перед for выполнить создание объекта и его его инициализацию, на итерациях обновлять значения объекта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 07:37 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Один преподаватель рассказывал такую историю: когда он был студентом, другой студент задавал на лекция всякие глупые вопросы. Первого это раздражало. А потом он понял, что эти глупые вопросы были, на самом деле, важны. В формате лекции (полтора часа пары) это действительно и важно и нужно - время ограничено. В формате форума - вредно и раздражает: предполагается, что человек не придумал какую-то фигню только что, а всё же потратил своё время на самостоятельные разборки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 09:41 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Вангую Сашка скоро возненавидит С++. Ему-бы MathLab или Wolfram для душевной услады... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 10:00 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
"Чтобы ломать кирпичи - нужно тренироваться, тренироваться и что? Правильно - ещё раз тренироваться" (ц) неизвестный сержант ВДВ new выделяет память и вызывает конструктор для создания объекта в выделенной памяти. delete вызывает деструктор для разрушения объекта и освобождает занятую объекту память. Таким образом, new и delete вызываются строго попарно и в одинаковой форме. Вроде, об этом рассказывается во первых строках главы про new любой книжки по C++ Зуб не дам, но и в стандарте такие вещи должны быть упомянуты. Хотя, вероятно, в стандарте всё будет "размазано" по куче взаимосвязанных мест. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 10:37 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
А может у него С++ с GC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 11:37 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
А были-ли проекты С++ компиллятора с таким аллокатором? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 11:43 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Умные указатели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 11:48 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Это не то. Это требует переписывания кода. А имею в виду вот так чтоб ты флудил через new а при выходе из scope блока или функции - утечки удалялись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 11:54 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
maytonимею в виду вот так чтоб ты флудил через new а при выходе из scope блока или функции - утечки удалялись. Будет забавно, когда память, выделенная в malloc, освободится при выходе из него. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 12:05 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Даже если опустить "мелкую проблемку" отсутствия эффективного алгоритма поиска "мёртвых" объектов, остаётся суровая проблема порядка вызова деструкторов. try/finally тоже руками пишут. И переписывают, если выяснится, что накосячили. Т.е. не существует общего рабочего решения, не говоря уж об эффективном - какая уж тут сборка мусора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 12:17 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovmaytonимею в виду вот так чтоб ты флудил через new а при выходе из scope блока или функции - утечки удалялись. Будет забавно, когда память, выделенная в malloc, освободится при выходе из него. Стековая тоже освобождается. Забавно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 13:01 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВ формате форума - вредно и раздражает: предполагается, что человек не придумал какую-то фигню только что, а всё же потратил своё время на самостоятельные разборки. В формате Сообщества - советы такого рода я приму только от Анатолия, Дмитрия и наших администраторов. А если это не совет мне, то не занимайтесь оффтопом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 15:20 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Я полагал, что существуют такие реализации класса, что такой код не приводил бы к утечке памяти. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 15:28 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
maytonВангую Сашка скоро возненавидит С++. Ему-бы MathLab или Wolfram для душевной услады... Знаю MATLAB, Maple и немного R. Численные методы на них удобнее всего реализовать. Эти языки проблемно-ориентированы к таким задачам. Кроме R - он скорее ориентирован на решение задач из области статистики. Но больше всего нравится Си. Он самый красивый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 15:32 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
maytonА были-ли проекты С++ компиллятора с таким аллокатором? http://www.hboehm.info/gc/ Баян, классика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 16:13 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЯ полагал, что существуют такие реализации класса, что такой код не приводил бы к утечке памяти. У тебя в этом коде прямо прописано использование dumb pointer, так что оставь надежды. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 16:26 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЯ полагал, что существуют такие реализации класса, что такой код не приводил бы к утечке памяти. Код: plaintext 1. 2. 3. 4. 5. Существуют реализации указателей. smth_class* замени на std::unique_ptr<smth_class> и утечки не будет. Еще почитай про shared_ptr и weak_ptr ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 20:00 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
Dima Tsmth_class* замени на std::unique_ptr<smth_class> и утечки не будет Только вот компилироваться перестанет. У него нет оператора присваивания простого указателя и конструктор из указателя - explicit. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2016, 20:08 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
maytonDimitry Sibiryakovпропущено... Будет забавно, когда память, выделенная в malloc, освободится при выходе из него. Стековая тоже освобождается. Забавно.в каком смысле? SP сдвигается, никаких операций с "памятью" не производится. В общем смысле, её никто и не держал, чтоб освобождать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 06:02 |
|
||
|
очищается ли память массива после выхода из цикла или при переходе на следующий шаг цикла?
|
|||
|---|---|---|---|
|
#18+
CEMbв каком смысле? SP сдвигается, никаких операций с "памятью" не производится. В общем смысле, её никто и не держал, чтоб освобождать :) А в куче как-то по-другому происходит? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2016, 13:40 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2018446]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
115ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 236ms |

| 0 / 0 |
