powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непонятная проблема из-за CharToOem()
7 сообщений из 7, страница 1 из 1
Непонятная проблема из-за CharToOem()
    #34038758
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VC6SP5 Проект - консольное приложение. Такой код:
Код: plaintext
1.
2.
3.
4.
5.
LPTSTR pszBuf = new TCHAR[dwSize +  1 ];
... заполнение pszBuf
CharToOem(pszBuf, pszBuf);
...запись в файл из pszBuf
delete pszBuf;
На последней строчке (delete pszBuf) вылетает ошибка причем не исключение как обычно, а "DAMAGE: after normal block (#36)" (картинка прилагается)
Причем если заремить CharToOem() - все нормально, в другом месте конструкция
Код: plaintext
1.
2.
3.
TCHAR szBuf[] = _T("Test");
CharToOem(szBuf, szBuf);
printf(szBuf);
Тоже работает. Из-за чего может быть эта ошибка?
Юникод не используется.
...
Рейтинг: 0 / 0
Непонятная проблема из-за CharToOem()
    #34038804
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TVC6SP5 Проект - консольное приложение. Такой код:
Код: plaintext
1.
2.
3.
4.
5.
LPTSTR pszBuf = new TCHAR[dwSize +  1 ];
... заполнение pszBuf
CharToOem(pszBuf, pszBuf);
...запись в файл из pszBuf
delete pszBuf;

А как заполняете?
null-terminated есть?
или пробуйте тогда CharToOemBuff
...
Рейтинг: 0 / 0
Непонятная проблема из-за CharToOem()
    #34038830
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Код: plaintext
1.
2.
3.
LPTSTR pszBuf = new TCHAR[dwSize +  1 ];
...
delete pszBuf;
[/src]

1.
Код: plaintext
new [] -> delete []
...
Рейтинг: 0 / 0
Непонятная проблема из-за CharToOem()
    #34039209
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KGPА как заполняете?
null-terminated есть?
или пробуйте тогда CharToOemBuff
null-terminated есть: *(pszBuf + dwSize + 1) = 0;
CharToOemBuff(pszBuf, pszBuf, dwSize) - та же проблема
...
Рейтинг: 0 / 0
Непонятная проблема из-за CharToOem()
    #34039212
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZrenBynew [] -> delete []
delete [] pszBuf - тоже не помогло.

Помогло использование второго буфера:
Код: plaintext
1.
2.
3.
4.
5.
6.
LPTSTR pszBuf = new TCHAR[dwSize];
LPTSTR pszBuf2 = new TCHAR[dwSize];
... заполнение pszBuf
CharToOemBuff(pszBuf, pszBuf2, dwSize);
...запись в файл из pszBuf2
delete [] pszBuf;
delete [] pszBuf2;

Если честно не могу понять разницу delete и delete [] . Понял тока что рекомендуется использовать в паре new-delete и new []-delete [].
Но в данном коде delete работает в обоих вариантах.
...
Рейтинг: 0 / 0
Непонятная проблема из-за CharToOem()
    #34039408
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Та ошибка, которую вы опубликовали, явно связана с порчей памяти.
Попробуйте отвести памяти больше в несколько раз. Обнулить её, функции передавать не адрес начала, а со смещением и потом посмотреть - сколько реально памяти используется - она будет не нулевой. Иначе эта ошибка всё равно всплывёт, только где-то дальше в коде.
Кстати, возможно реальная ошибка и так раньше, просто проявилась в этом куске.
...
Рейтинг: 0 / 0
Непонятная проблема из-за CharToOem()
    #34041036
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В твоём случае лучше использовать CharToOem с двумя буферами. Раз уж с TCHARами возишься.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непонятная проблема из-за CharToOem()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]