Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
nebrit63
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 13
1

Оператор delete[]. Как исправить ошибку: Error HEAP CORRUPTED. Откуда утечка памяти?

08.02.2013, 17:26. Просмотров 517. Ответов 3
Метки нет (Все метки)

Код функции:
C++
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
void SeeAllTimesAllProcs()
{
HANDLE SnapHNDL = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 StrucWthInfProcP32;
StrucWthInfProcP32.dwSize = sizeof(PROCESSENTRY32);
 
if(Process32First(SnapHNDL, &StrucWthInfProcP32))
{
FILETIME TimeNanoFT[4] = {0};
FILETIME TimeLocFT = {0};
SYSTEMTIME TimeSysST = {0};
 
do
{
HANDLE ProcHNDL = OpenProcess(PROCESS_ALL_ACCESS, 0, StrucWthInfProcP32.th32ProcessID);
 
if(ProcHNDL && GetProcessTimes(ProcHNDL, &TimeNanoFT[0], &TimeNanoFT[1], &TimeNanoFT[2], &TimeNanoFT[3]))
{
FileTimeToLocalFileTime(&TimeNanoFT[0], &TimeLocFT);
 
FileTimeToSystemTime(&TimeLocFT, &TimeSysST);
 
cout.setf(ios :: left);
 
char *StrP = "PID:";
char *StrPID = new char[strlen(StrP) + 10];
sprintf(StrPID, "%s %d", StrP, StrucWthInfProcP32.th32ProcessID);
cout.width(40); cout << StrPID;
 
char *StrFileExe = "FileEXE:";
char *StrEXENAME = new char[strlen(StrFileExe) + 20];
sprintf(StrEXENAME, "%s %ls", StrFileExe, StrucWthInfProcP32.szExeFile);
cout.width(40); cout << StrEXENAME;
 
char *StrTimeCreat = "Время создания:";
char *StrTimeProc = new char[strlen(StrTimeCreat) + 10];
sprintf(StrTimeProc, "%s %02d:%02d:%02d", StrTimeCreat, TimeSysST.wHour, TimeSysST.wMinute, TimeSysST.wSecond);
cout << StrTimeProc << endl << endl;
 
delete[] StrPID; StrPID = NULL;
delete[] StrEXENAME; StrEXENAME = NULL;
delete[] StrTimeProc; StrTimeProc = NULL;
CloseHandle(ProcHNDL);
}
else
{
cout << "Возникла ошибка открытия описателя процесса с PID: " << StrucWthInfProcP32.th32ProcessID << endl << endl;
CloseHandle(ProcHNDL);
}
}
while(Process32Next(SnapHNDL, &StrucWthInfProcP32));
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2013, 17:26
Ответы с готовыми решениями:

GDI функции (рисование): критична ли утечка памяти и как её устранить?
Друзья! Вот код. Не пинать (к примеру, все хэндлы можно было объявить ВНЕ...

Не пойму как исправить ошибку: "fatal error C1060: compiler is out of heap space"
Написал программу , вроде никаких ошибок нету , но выдает fatal error C1060:...

Утечка памяти. new/delete. Всё как доктор прописал, но не работает
Всем привет! Начну сразу с кода: #include &quot;stdafx.h&quot; #include &lt;conio.h&gt;...

Delete[] и утечка памяти
Как можно избежать вытока памяти? И вообще почкму криво работает?...

Утечка памяти и delete
Вот накопились вопросы про утечки памяти. 1) Как проявляется утечка памяти? На...

3
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26340 / 17671 / 6998
Регистрация: 22.10.2011
Сообщений: 31,087
Записей в блоге: 6
08.02.2013, 17:57 2
Цитата Сообщение от nebrit63 Посмотреть сообщение
Откуда утечка памяти?
Откуда уверенность в утечке? За исключением отсутствия
C++
1
CloseHandle(SnapHNDL);
всё нормально, никаких утечек нет.
1
nebrit63
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 13
08.02.2013, 18:14  [ТС] 3
Во время выполнения ошибка данная
0
Миниатюры
Оператор delete[]. Как исправить ошибку: Error HEAP CORRUPTED. Откуда утечка памяти?  
WhiteP
611 / 209 / 32
Регистрация: 20.11.2012
Сообщений: 435
Завершенные тесты: 1
08.02.2013, 18:41 4
Тут ошибка.

Цитата Сообщение от nebrit63 Посмотреть сообщение
C++
1
2
char *StrEXENAME = new char[strlen(StrFileExe) + 20];
sprintf(StrEXENAME, "%s %ls", StrFileExe, StrucWthInfProcP32.szExeFile);
Смотри сколько ты памяти выделяешь и сколько пишешь. Сообщение о том и говорит - что пишешь за пределы выделенного буфера.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2013, 18:41

Утечка памяти, правильное использование new/delete
Здравствуйте. Написал программку, где работаю с передачей контейнера QList...

Утечка памяти в простейшей функции. Как исправить?
Простейший пример: function func(a : string;):TStringList; var i:integer;...

delete[] *pointer vs. delete pointer и утечка памяти
Здравствуйте! Есть класс &quot;умного&quot; указателя counted_ptr, который удаляет...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru