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

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

Восстановить пароль Регистрация
 
Mescalito
0 / 0 / 0
Регистрация: 13.04.2010
Сообщений: 15
26.04.2010, 23:12     Массивы Мистика, 2008 VS, C++ #1
Вобщем вопрос к людям сведущим, как вышло что строчка
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++
Посмотрите здесь:

C++ VS C++ 2008
C++ Одномерные массивы на Visual C++ 2008 : я новичек HELP
индексные массивы и адресные массивы C++
Мистика ? - Хранимые процедуры & VC++ (ADO) C++
C++ DrawText win api - Мистика =)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GAME
 Аватар для GAME
22 / 22 / 3
Регистрация: 31.10.2009
Сообщений: 199
26.04.2010, 23:15     Массивы Мистика, 2008 VS, C++ #2
Mescalito, она создаёт указатель... а поскольку символа конца строки нету , вам дебаг пишет ещё всякий мусор... из соседних ячеек памяти... наверно так
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 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++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
26.04.2010, 23:35     Массивы Мистика, 2008 VS, C++ #5
Цитата Сообщение от Mescalito Посмотреть сообщение
Выходит всегда когда требуется массив длинны i , в i тый элемент нужно писать конец строки?
Именно так. Благодаря этому можно легко определить длину передаваемой строки в вызываемой функции.
GAME
 Аватар для GAME
22 / 22 / 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++
Еще ссылки по теме:

C++ Массивы в MS Visual C++ 2008
Какая-то мистика с if C++
C++ Если проект создала в Visual C++ Express 2008, он должен запуститься просто в VS 2008?

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

Или воспользуйтесь поиском по форуму:
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++
Ответ Создать тему
Опции темы

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