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

new и delete - C++

Восстановить пароль Регистрация
 
 
-J_O_K_E_R-
 Аватар для -J_O_K_E_R-
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
28.08.2013, 19:07     new и delete #1
как лучше очищать память?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
 
 
//как лучще очищать память?
int main(){
    char *buff = new char;
        
for(int i=0; i<90000000000; i++){
        
        sprintf(buff,"%d",i);
        printf(buff,"%d");
        delete buff; // так?
    }
    //delete buff; или так?
    system("pause");
    return 0;
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2013, 19:07     new и delete
Посмотрите здесь:

"delete [] a, b;" эквивалентно "delete [] a; delete [] b;"? C++
C++ delete[]
new - delete C++
C++ new и delete
C++ delete this
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
28.08.2013, 19:45     new и delete #21
-J_O_K_E_R-, ох.. а delete где? конечно он будет, ты выделил память, записал в нее, а потом со следующего круга выделил новую, старая при этом осталась и доступ к ней теряется.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-J_O_K_E_R-
 Аватар для -J_O_K_E_R-
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
28.08.2013, 19:48  [ТС]     new и delete #22
Цитата Сообщение от VLK Посмотреть сообщение
-J_O_K_E_R-, ох.. а delete где? конечно он будет, ты выделил память, записал в нее, а потом со следующего круга выделил новую, старая при этом осталась и доступ к ней теряется.
да просто код делался под одно выполнение а потом надо было сделать по 2ляма
и заметил утечку....

теперь хочу перевести все char на динамическое выделение а не фиксированное...
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
28.08.2013, 19:49     new и delete #23
Цитата Сообщение от -J_O_K_E_R- Посмотреть сообщение
теперь хочу перевести все char на динамическое выделение а не фиксированное...
амбициозные планы
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.08.2013, 19:49     new и delete #24
Цитата Сообщение от -J_O_K_E_R- Посмотреть сообщение
все парни спасибо разобрался где утечка памяти
По данным диспетчера задач винды нельзя сказать есть утечка или нет

Цитата Сообщение от -J_O_K_E_R- Посмотреть сообщение
теперь хочу перевести все char на динамическое выделение а не фиксированное...
только зачем это нужно?
-J_O_K_E_R-
 Аватар для -J_O_K_E_R-
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
28.08.2013, 19:50  [ТС]     new и delete #25
Цитата Сообщение от VLK Посмотреть сообщение
амбициозные планы
я еще начинаю программировать на С++

косяки делаю...
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
29.08.2013, 00:39     new и delete #26
C++
1
2
        char *buff = new char;
        sprintf(buff,"%d",i);
Рано или поздно упадет
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 982
Регистрация: 02.05.2013
Сообщений: 10,298
Завершенные тесты: 1
29.08.2013, 08:50     new и delete #27
Цитата Сообщение от -J_O_K_E_R- Посмотреть сообщение
for(int i=0; i<90000000000; i++)
Слишком большое значение для int. Оно будет усечено.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
29.08.2013, 09:22     new и delete #28
Цитата Сообщение от Jupiter Посмотреть сообщение
По данным диспетчера задач винды нельзя сказать есть утечка или нет
Поясните пожалуйста.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.08.2013, 12:12     new и delete #29
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Поясните пожалуйста.
что пояснить? диспетчер задач это для домохозяек для отслеживание утечек памяти нужно использовать спец. средства VLD/функции crt/valgrind
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
29.08.2013, 12:16     new и delete #30
Цитата Сообщение от Jupiter Посмотреть сообщение
диспетчер задач это для домохозяек для отслеживание утечек памяти нужно использовать спец. средства VLD/функции crt/valgrind
Конечно. Но нельзя так вот утверждать, что по диспетчеру задач вообще невозможно проследить сам факт утечки. Я вот за что.
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
29.08.2013, 12:29     new и delete #31
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Конечно. Но нельзя так вот утверждать, что по диспетчеру задач вообще невозможно проследить сам факт утечки. Я вот за что.
я прослеживал

что, по диспетчеру задач нельзя посмотреть как тут утекает память:

C++
1
2
3
4
double *var;
 
for (int i = 0; i < 1000; i++)
{ var = new double[100000];}
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
29.08.2013, 13:34     new и delete #32
VLK, http://www.gunsmoker.ru/2009/05/blog-post_24.html
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
29.08.2013, 16:56     new и delete #33
Цитата Сообщение от VLK Посмотреть сообщение
что, по диспетчеру задач нельзя посмотреть как тут утекает память
Если у Вас утекает по нескольку байт в минуту, то врядли диспетчер задач поможет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 17:09     new и delete
Еще ссылки по теме:

C++ delete[]
delete[] *pointer vs. delete pointer и утечка памяти C++
New/Delete C++

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

Или воспользуйтесь поиском по форуму:
Shmasya
8 / 14 / 1
Регистрация: 19.08.2013
Сообщений: 68
29.08.2013, 17:09     new и delete #34
Цитата Сообщение от VLK Посмотреть сообщение
глупый наверное вопрос, какая цель данной программы
Ну и глупый ответ: чистить буфер.
Yandex
Объявления
29.08.2013, 17:09     new и delete
Ответ Создать тему
Опции темы

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