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

bad ptr - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
AK3RN
 Аватар для AK3RN
307 / 18 / 2
Регистрация: 01.05.2010
Сообщений: 250
22.05.2010, 09:51     bad ptr #1
Здравствуйте!
Пишу небольшую программу для работы с текстом. При substr'е куска строки вывелся не только нужный мне кусок, но и немного мусора из памяти(вроде ══════¤¤¤¤лллллллл■ю■). После непродолжительной отладки выяснилось, что при объявлении указателя на массив символов и его инициализации:

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

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

Спасибо за помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 / 2
Регистрация: 01.05.2010
Сообщений: 250
22.05.2010, 11:23  [ТС]     bad ptr #3
Цитата Сообщение от Roma_F Посмотреть сообщение
зачем указатель
C++
1
char buff[] = "some text\0";
К Вашему сведению, это одно и то же.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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 / 2
Регистрация: 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
Закрытая тема Создать тему
Опции темы

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