|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - strcpy_s, strcat, strlen вызывают Access violation |
|
C/C++ - strcpy_s, strcat, strlen вызывают Access violation
|
![]() Старожил Сообщения: 467 |
|
|
------- Отправлено: 14:25, 02-04-2010 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата crashtuak:
Может функция пытается получить результат, который она еще не сформировала? |
|
------- Отправлено: 14:41, 02-04-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Старожил Сообщения: 467
|
Профиль | Отправить PM | Цитировать Нет, результат уже есть, в дебагере смотрел, все строки в наличии.
Для ясности предоставлю код программы: Результат: Access violation. |
------- Последний раз редактировалось crashtuak, 02-04-2010 в 17:04. Отправлено: 16:42, 02-04-2010 | #3 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать crashtuak, заголовочный файл #include <cstring.h> почему не подключаешь? А так не прокатит?
|
------- Отправлено: 17:26, 02-04-2010 | #4 |
![]() Старожил Сообщения: 467
|
Профиль | Отправить PM | Цитировать Drongo, твой код работает, у меня все проблемы из-за LPSTR наверно были, но мне и char пойдет. Но как оказалось, проблема у меня более глобального характера, и без полного кода никак. Вскоре я его выложу.
|
|
------- Отправлено: 19:34, 02-04-2010 | #5 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать использую описание функции по ссылке:
http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx Цитата crashtuak:
код strcpy_s(testt,strlen(testt2)+strlen(testt),testt2); должен запихать в testt, под который выделен (формально) один символ, и приравнен нулю strlen(testt2)+strlen(testt) символов из строки testt2. Случись такое в моей голове, я бы тоже выдал access violation. И возможно красивые мультики увидел бы... 1. выделить буфер необходимого размера 2. следить за переполнением буфера unsigned const dest_size = 100; // я невнимательно прочитал про размер - учитывает он конечный ноль или нет. Написал как будто учитывает. TCHAR testt[dest_size] = "preamble+"; // хотя можно и из динамической памяти LPSTR testt = new char[dest_size]; LPSTR testt2 = "qwerty"; strcpy_s(testt + strlen(testt), min(dest_size - strlen(testt1), strlen(testt2)+1 /*для завершающего 0*/), testt2); // если выделял динамически, то delete [] testt; |
|
Последний раз редактировалось pva, 03-04-2010 в 19:27. Причина: ум за разум Отправлено: 19:15, 03-04-2010 | #6 |
![]() Старожил Сообщения: 467
|
Профиль | Отправить PM | Цитировать Цитата pva:
![]() Понял, где ошибки, буду править. pva, пока вы не указали на строку, я и не подумал, какой бред написал, у меня в самого в голове access violation из-за своей тупости полчился ![]() |
|
------- Отправлено: 22:05, 03-04-2010 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Нужно убедиться, что не вирусы вызывают BSOD | doananh | Лечение систем от вредоносных программ | 19 | 02-04-2009 15:53 | |
Unable to access the computer. Access is denied | Maf1a | Microsoft Windows NT/2000/2003 | 2 | 13-07-2007 15:42 | |
[решено] Способ копирования защиненного файла (Когда - File sharing violation) | RVGroup | Microsoft Windows 2000/XP | 3 | 25-10-2006 11:21 | |
DBase | Ошибка Key violation, базы Paradox | khvalera | Программирование и базы данных | 1 | 11-08-2005 14:46 | |
Ошибка Segmentation Violation | vvadim | Microsoft Windows 95/98/Me (архив) | 2 | 12-11-2004 10:56 |
|