![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Командор Норрингтон |
![]()
Сообщение
#1
|
Madman ![]() ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 477 Регистрация: 28-August 06 Из: Planet Earth Пользователь №: 4,052 ![]() |
Я на VB6, и Delphi...
А вы на чём? |
![]() ![]() |
navy |
![]()
Сообщение
#2
|
Hagane no Renkinjutsushi ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Seaward.Ru Team Сообщений: 5,973 Регистрация: 15-March 05 Из: Волгоград Пользователь №: 578 ![]() |
Цитата тут еще и сам буфер усекается до этой позиции естественно ![]() Цитата realloc(_buff, _pos + 2) т.е. до размера pos+2 Цитата если не записывать завершающий нуль, то в буфере в конце оказывается какой-то мусор - откуда он? ты скорее всего неправильно указываешь размер буфера, т.е. делаешь его слишком большим, а следовательно хвост у тебя остается тем, что было в памяти уже до того, как ты сказал, что это будет массивом. Это если я правильно помню все ![]() |
Warship |
![]()
Сообщение
#3
|
Гроза морей ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: бета-тестер Сообщений: 441 Регистрация: 29-April 07 Из: Прим. край г. Находка Пользователь №: 9,103 ![]() |
естественно ![]() Ну да, это понятно. Это у меня скорее такое рассуждение было ![]() ты скорее всего неправильно указываешь размер буфера, т.е. делаешь его слишком большим, а следовательно хвост у тебя остается тем, что было в памяти уже до того, как ты сказал, что это будет массивом. Да нет, размер я вроде указывал верный. ![]() Было вот так, пример: Код arrayPtr = NULL; arrayPtr = BufferSet(arrayPtr, 0x01, 0); arrayPtr = BufferSet(arrayPtr, 0xA0, 1); printf("arrayPtr: %s.\n", (char*) arrayPtr); // Вывод - два мои байта + левый хвост из 10-12 /// Функция записывает в буфер указанный байт на указанную позицию. void* BufferSet(void* _buff, unsigned char _byte, unsigned long _pos) { _buff = realloc(_buff, _pos + 1); ((unsigned char*) (_buff))[_pos] = _byte; return _buff; } Т.е. при первом вызове буфер резайзится до 1 байта и туда кладется 0x01, при втором вызове - 2 байта и 0xA0. Вродеб, все верно, но хвост есть. |
![]() ![]() |
Текстовая версия | Сейчас: 13th September 2025 - 01:38 |