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

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

Войти
Регистрация
Восстановить пароль
 
Mescalito
0 / 0 / 0
Регистрация: 13.04.2010
Сообщений: 15
#1

Массивы Мистика, 2008 VS, C++ - C++

26.04.2010, 23:12. Просмотров 418. Ответов 6
Метки нет (Все метки)

Вобщем вопрос к людям сведущим, как вышло что строчка
C++
1
char * temp = new char [10];
создает массив непонятной длинны никак не равной десяти,
дебаг прилагается на скрине.
Миниатюры
Массивы Мистика, 2008 VS, C++  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2010, 23:12     Массивы Мистика, 2008 VS, C++
Посмотрите здесь:

Массивы в MS Visual C++ 2008 - C++
Здравствуйте, помогите пожалуйста решить задачу: В журнале группы ежедневно на каждом занятии против фамилии делаются следующие пометки: ...

Одномерные массивы на Visual C++ 2008 : я новичек HELP - C++
Задача №1 Сформировать одномерный массив целых чисел, используя датчик случайных чисел и выполнить задание c использованием индексов: ...

Какая-то мистика с if - C++
Программа работает нормально, но если я убираю проверку в перегрузке оператора + условие if, то функция strcat не склеивает... #include...

DrawText win api - Мистика =) - C++
Начинал изучать C++ на FreeBSD, собирал мейкфайлы и горя не знал. Полез в винде разбираться с её API, и начался дурдом. Вот код. Интересует...

Мистика ? - Хранимые процедуры & VC++ (ADO) - C++
Что то я совсем ничерта не понимаю!!! Есть хранимая процедура типа(даже такой упрощенный код не работает): /* просмотр объектов...

Мистика при удалении из бинарного дерева поиска ! - C++
Привет народ !) Пытаюсь создать функцию удаления листа из бинарного дерева поиска : template<typename NODETYPE> void...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
26.04.2010, 23:15     Массивы Мистика, 2008 VS, C++ #2
Mescalito, она создаёт указатель... а поскольку символа конца строки нету , вам дебаг пишет ещё всякий мусор... из соседних ячеек памяти... наверно так
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
26.04.2010, 23:17     Массивы Мистика, 2008 VS, C++ #3
Цитата Сообщение от GAME Посмотреть сообщение
Mescalito, она создаёт указатель... а поскольку символа конца строки нету , вам дебаг пишет ещё всякий мусор... из соседних ячеек памяти... наверно так
Даже не наверно, а так.
Mescalito, попробуй:
C++
1
2
char * temp = new char [10];
temp[9] = '\0';
Mescalito
0 / 0 / 0
Регистрация: 13.04.2010
Сообщений: 15
26.04.2010, 23:32  [ТС]     Массивы Мистика, 2008 VS, C++ #4
Большое спасибо, символ конца строки помог, но всетаки непонятно почему масив создается непонятной длинны, ведь дело не только в отображении дебага , я вполне себе могу работать с 12 тым или 15 тым элементом 10 элементного массива, и такой расклад крайне неудобен в случае когда требуется,скажем передать масив целиком в качестве аргумента да и в других случаях такой мусор малоприятен.
Выходит всегда когда требуется массив длинны i , в i тый элемент нужно писать конец строки?
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
26.04.2010, 23:35     Массивы Мистика, 2008 VS, C++ #5
Цитата Сообщение от Mescalito Посмотреть сообщение
Выходит всегда когда требуется массив длинны i , в i тый элемент нужно писать конец строки?
Именно так. Благодаря этому можно легко определить длину передаваемой строки в вызываемой функции.
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
26.04.2010, 23:36     Массивы Мистика, 2008 VS, C++ #6
Цитата Сообщение от Mescalito Посмотреть сообщение
но всетаки непонятно почему масив создается непонятной длинны, ведь дело не только в отображении дебага , я вполне себе могу работать с 12 тым или 15 тым элементом 10 элементного массива, и такой расклад крайне неудобен в случае когда требуется,скажем передать масив целиком в качестве аргумента да и в других случаях такой мусор малоприятен.

Цитата Сообщение от GAME Посмотреть сообщение
она создаёт указатель... а поскольку символа конца строки нету , вам дебаг пишет ещё всякий мусор... из соседних ячеек памяти...
тот мусор из соседних ячеек памяти к вашему массиву отношения не имеет, и лучше всё таки не использовать больше памяти чем просили. Просто ставьте в конце выделенного вами массива символ конца строки , таким образом вы будете контролировать выход за его пределы.


Цитата Сообщение от CyBOSSeR Посмотреть сообщение
C++
1
2
 char * temp = new char [10];
temp[9] = '\0';
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2010, 23:36     Массивы Мистика, 2008 VS, C++
Еще ссылки по теме:

VS C++ 2008 - C++
Помогите мне разобраться, вот на Delphi 7 есть компонент Memo, какой компонент подобен из VS C++? richTextBox? просто компонент Memo удобен...

Вопрос по VS 2008 - C++
Здравствуйте, не подскажите как: 1) посмотреть аварийный стэк вызовов 2) как поставить точку останова, и заставить прогу работать пока...

stl в VS 2008 - C++
vector <int> size; deque <int> COUNTER; вылазиют ошибки синтаксическая ошибка: отсутствие ";" перед "<" отсутствует спецификатор...

Многопоточность в VC++ 2008 - C++
Где можно найти нормальный пример? Все, что запускаю не работает, а значит читать обьяснения нет смысла. Вот например при таком коде (из...


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

Или воспользуйтесь поиском по форуму:
Mescalito
0 / 0 / 0
Регистрация: 13.04.2010
Сообщений: 15
26.04.2010, 23:36  [ТС]     Массивы Мистика, 2008 VS, C++ #7
буду знать, еще раз спасибо.
Yandex
Объявления
26.04.2010, 23:36     Массивы Мистика, 2008 VS, C++
Ответ Создать тему
Опции темы

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