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

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

20.03.2013, 13:00. Показов 1126. Ответов 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
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,871
Записей в блоге: 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
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,871
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru