Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
AK3RN
 Аватар для AK3RN
307 / 18 / 3
Регистрация: 01.05.2010
Сообщений: 250
#1

bad ptr - C++

22.05.2010, 09:51. Просмотров 1720. Ответов 5
Метки нет (Все метки)

Здравствуйте!
Пишу небольшую программу для работы с текстом. При substr'е куска строки вывелся не только нужный мне кусок, но и немного мусора из памяти(вроде ══════¤¤¤¤лллллллл■ю■). После непродолжительной отладки выяснилось, что при объявлении указателя на массив символов и его инициализации:

C++
1
char* buff="some text\0";
значение buff равно <bad ptr> и ссылается он на 0xcccccccc

Самое непонятное то, что при объявлении указателя на массив символов в других функциях все происходит нормально и мусора из памяти нет!
Что мне делать? Вроде бы объявляю и инициализирую все правильно.

Спасибо за помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2010, 09:51     bad ptr
Посмотрите здесь:

HDD BAD& SMART BAD
bad скрипты в TWebBrowser C++
C++ Неверно работает код *ptr++ = *ptr2++
C++ Как динамически обьявить многомерный массив (ptr = new int[5][5])?
C++ Что означает строка: CString &ptr = Text; ?
C++ Значение указателей (*ptr.) на пустые ячейки памяти
Ошибка на стадии выполнения ptr = ptr; C++
C++ istream состояние bad
Assembler Что означает ptr в строке byte ptr[si],al
Ошибка bad ptr при возвращении занчения из функции C++
Ошибка "Bad allocation" при обращении к массиву C++
BSOD При запуске windows выдаёт разные ошибку типо netio.sys, bad pool header, bad system config info

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
22.05.2010, 10:33     bad ptr #2
зачем указатель
C++
1
char buff[] = "some text\0";
AK3RN
 Аватар для AK3RN
307 / 18 / 3
Регистрация: 01.05.2010
Сообщений: 250
22.05.2010, 11:23  [ТС]     bad ptr #3
Цитата Сообщение от Roma_F Посмотреть сообщение
зачем указатель
C++
1
char buff[] = "some text\0";
К Вашему сведению, это одно и то же.
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
22.05.2010, 12:12     bad ptr #4
Цитата Сообщение от AK3RN Посмотреть сообщение
К Вашему сведению, это одно и то же.
Во-первых это не одно и то же. Про разницу в этих двух объявлениях не раз писали на форуме. В двух словах
C
1
2
char *buf1 = "abcd"; /* неконстантный указатель на константную строку */
char buf2[] = "efgh"; /* константный указатель на неконстантную строку */
и кстати во-вторых '\0' в конце строки и сам поставится.
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
22.05.2010, 13:27     bad ptr #5
Цитата Сообщение от AK3RN Посмотреть сообщение
Самое непонятное то, что при объявлении указателя на массив символов в других функциях все происходит нормально и мусора из памяти нет!
Что мне делать? Вроде бы объявляю и инициализирую все правильно.
а вообще что вы от нас то хотите?
здесь телепатов нет - от приведённой строчки толку нет, сама по себе она ошибку не вызовет, об остальном коде можно только догадываться по вашему краткому описанию

Цитата Сообщение от AK3RN Посмотреть сообщение
К Вашему сведению, это одно и то же.
(в дополнение к посту easybudda)
C++
1
2
3
4
5
char buff1[] = "some text";
char *buff2 = "some text";
 
cout << sizeof(buff1) << endl;
cout << sizeof(buff2) << endl;
AK3RN
 Аватар для AK3RN
307 / 18 / 3
Регистрация: 01.05.2010
Сообщений: 250
22.05.2010, 15:08  [ТС]     bad ptr #6
Кода у меня там около двух-трех сотен строк. Выкладывать всё смысла нет. Подробнее: создал функцию, первой строкой написал char* buff="some text\0"; и все, сразу ошибка. Может ли быть это от того, что в других функциях выделяемая при помощи new память не освобождается?

Добавлено через 13 минут
Проблема решена. Спасибо за помощь.
Yandex
Объявления
22.05.2010, 15:08     bad ptr
Закрытая тема Создать тему
Опции темы

Текущее время: 17:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru