Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для ijonhson
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584

CodeGuard и размер выделенного блока

20.03.2013, 13:00. Показов 1134. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток у меня выскакивает ошибка,вернее не ошибка всё работает как надо,CodeGuard ругается на утечку памяти несмотря на то что везде прописано delete в общем код:
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
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
if(SaveDialog1->Execute())
 {
    AnsiString ij,ij1,ij2,ij3,ij4;
    ij=StringReplace(SaveDialog1->FileName,"\\","\\\\",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase)+"\\res.ij";
    char* filepath=new char[ij.Length()];
    strcpy(filepath,ij.c_str());//тут
    ofstream file;
    file.open(filepath,std::ios::out|std::ios::binary);
    file.write((char*)&mas,sizeof(mas));
    file.close();
 CreateDirectory(SaveDialog1->FileName.c_str(),NULL);
 ij1=StringReplace(SaveDialog1->FileName,"\\","\\\\",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase)+"\\rb1.ij";
 ij2=StringReplace(SaveDialog1->FileName,"\\","\\\\",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase)+"\\rb2.ij";
 ij3=StringReplace(SaveDialog1->FileName,"\\","\\\\",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase)+"\\rb3.ij";
 ij4=StringReplace(SaveDialog1->FileName,"\\","\\\\",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase)+"\\rb4.ij";
 Label1->Caption=ij1;
 char *ijj1 = new char[ij1.Length()];
 strcpy(ijj1,ij1.c_str());//ещё тут
 savebit(Image1,ijj1);
 char *ijj2 = new char[ij2.Length()];
 strcpy(ijj2,ij2.c_str()); // и тут
 savebit(Image2,ijj2);
 char *ijj3 = new char[ij3.Length()];
 strcpy(ijj3,ij3.c_str()); //везде на strcpy 
 savebit(Image3,ijj3);
 char *ijj4 = new char[ij4.Length()];
 strcpy(ijj4,ij4.c_str());
 savebit(Image4,ijj4);
 delete[] filepath; 
delete[] ijj1;
 delete[] ijj2;
 delete[] ijj3;
 delete[] ijj4;
 }
}
глючит CodeGuard или я как обычно что-то упустил?
prntscrn:
Миниатюры
CodeGuard и размер выделенного блока  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.03.2013, 13:00
Ответы с готовыми решениями:

CodeGuard в x64
В Builder x32 есть CodeGuard. В Builder x64 его нет. Для написания прог на x64 мне приходится отлаживать прогу под x32, а релиз делать...

CodeGuard не срабатывает
Доброго! Включил в настройках проекта CodeGuard. В проекте всего одна кнопка. ...

CodeGuard в C++ Builder 6
Добрый день. Подскажите как пользоваться сабжевой штукой. Вроде как включил, галочки поставил, но во вьюхе CodeGuardLog никогда ничего не...

4
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
20.03.2013, 15:57
ijonhson, Length() возвращает длину строки без нуль-терминатора, а strcpy пытается копировать всё, включая '\0', вот и не хватает места...

Цитата Сообщение от ijonhson Посмотреть сообщение
CodeGuard ругается на утечку памяти
Не на утечку он ругается, а на то, что есть попытка обратиться к 19-му байту, в то время, как размер выделенного блока - всего 18.
1
 Аватар для ijonhson
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
20.03.2013, 16:16  [ТС]
и как быть
C++
1
char *ijj1 = new char[ij1.Length()+1];?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
20.03.2013, 16:21
Да, выделять память, достаточную для хранения строки вместе с завершающим символом.
0
 Аватар для ijonhson
47 / 47 / 15
Регистрация: 09.03.2011
Сообщений: 584
20.03.2013, 16:29  [ТС]
красота спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.03.2013, 16:29
Помогаю со студенческими работами здесь

Ошибки и логи CodeGuard
Здрасте, есть у меня ошибочка в програмке, пересмотрел весь код, не могу найти, одно наверняка известно - попытка чтения из недоступной...

CodeGuard ругается при записи в файл
Здравствуйте! Решил проверить код записи массива в файл, подключив CodeGuard: ofstream myfile(&quot;c:/my_file.html&quot;,...

Включить CodeGuard и найти Access Vioaltion
Здравствуйте. О себе:) : Win7, C++ Builder XE3, AsyncPro. Столкнулся со следующей проблемой: Есть проект, который в среде...

Ошибка при проверке программы через CodeGuard
Есть программа, которая работает с потоками. Все в принципе работает правильно, но при проверке CodeGuard'ом вылезает ошибка...

Отправка выделенного блока
сделал такую кострукцию &lt;html&gt; &lt;head&gt; &lt;script type=&quot;text/javascript&quot;&gt; function clear(){ ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru