Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Heap block modified 
V
    Опции темы
CTapMex
Дата 8.10.2009, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



приветсвую
есть такой код (HeapValidate натыкано так много чтобы выявить место проблемы)
Код


void *AllocH(size_t size)
{
    void    *k;
    if (HeapValidate( hHeap, 0, NULL))
        k = HeapAlloc( hHeap, 0, size);
    if (HeapValidate( hHeap, 0, NULL))
        return k;
}

wchar_t *StrDup(const wchar_t *m)
{
    wchar_t *rc;

    rc = (wchar_t *) AllocH( (wcslen( m) + 1) * sizeof(wchar_t));
    if ((rc) && (HeapValidate( hHeap, 0, NULL)))
        wcscpy_s( rc, (wcslen( m) + 1) * sizeof(wchar_t), m);
    if (HeapValidate( hHeap, 0, NULL))
        return rc;
    else
        return NULL;
}



в строке  с wcscpy_s возникает нарушение кучи. никак не могу понять почему. т.е.до выполнения копироания вкуче все нормально, а после - плохо.
я выделил из кучи память размером кол-во символов в строке +1 на размер одного символа (wcslen( m) + 1) * sizeof(wchar_t) 
этот же размер передаю при копировании строки.
в StrDup передается  _wcsdup( L"..")
PM MAIL   Вверх
Anikmar
Дата 8.10.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Там с параметрами wcscpy_s все в порядке? (что-то я на память не помню, но кажется не так)
PM MAIL ICQ   Вверх
CTapMex
Дата 8.10.2009, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



Код

errno_t wcscpy_s(
   wchar_t *strDestination,
   size_t numberOfElements,
   const wchar_t *strSource 
);

strDestination
Location of destination string buffer 

numberOfElements
Size of the destination string buffer. 

strSource
Null-terminated source string buffer. 



PM MAIL   Вверх
Anikmar
Дата 8.10.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(CTapMex @  8.10.2009,  12:45 Найти цитируемый пост)
numberOfElements

Так там нужно количество символов или размер буфера?
PM MAIL ICQ   Вверх
CTapMex
Дата 8.10.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



чето я сам не понимаю. имя говорит о количесвте элементов, пояснение о размере

вообще, я в начале пробовал с wcslen( m) + 1, но после того как оно не работало с той же ошибкой, я решил что тут про размер буфера

Добавлено через 3 минуты и 39 секунд
в общем то разоборался.
имеется в виду кол-во символов. ох уж этот англ. язык.
тут вроде надо так
numberOfElements
Count elements in destination string buffer.  9или типо того)


PM MAIL   Вверх
Anikmar
Дата 8.10.2009, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Если вопрос решен - закройте, пожалуйста, тему
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.