10 / 12 / 2
Регистрация: 13.01.2010
Сообщений: 363
1

Ошибка выхода за границы массива, когда её быть не должно

19.09.2010, 10:52. Показов 1293. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот функция:
C#
1
2
3
4
5
6
7
8
9
10
public IntPtr[] getmas()
        {
            char[] chars = "`1234567890-=qwertyuiop[]asdfghjkl;'zxcvbnm,./!@#$%^&*()\\|\"?{}~№:ёЁйцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ\n ".ToCharArray();
            IntPtr[] lol = new IntPtr[chars.Length];
            for (int i = 0; i < lol.Length; i++)
            {
                lol[chars[i]] = (IntPtr)chars[i];
            }
            return lol;
        }
когда i в цикле доходит до 63, VS выдаёт ошибку, мол вышел за границы массива. Но там 100+ элементов! Почему так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2010, 10:52
Ответы с готовыми решениями:

Как должна быть организована сеть офиса? Что должно быть настроено обязательно, а чего быть не должно?
Добрый день. Сразу оговорюсь, что я инженер-строитель и настройкой сети занимаюсь только потому,...

Ошибка выхода за границы памяти
При вызове функции сортировки слиянием (код прилагаю) происходит ошибка: Вызвано исключение:...

Почему отображается только одна кнопка, когда должно быть две?
&lt;button class=&quot;open-button&quot; onclick=&quot;openForm()&quot;&gt;Регистрация&lt;/button&gt; &lt;button...

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива....

5
1318 / 991 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
19.09.2010, 11:06 2
можт все таки lol[i] вместо lol[chars[i]] ??
0
10 / 12 / 2
Регистрация: 13.01.2010
Сообщений: 363
19.09.2010, 11:08  [ТС] 3
ну да, так работает
я почему то думал что можно элементу массива давать текстовое название а не номер
0
1318 / 991 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
19.09.2010, 12:10 4
ээ постой! индекс массива может быть только целым положительным числом!! тут просто char к int приводится (через ushort) так сказать, за сценой, и получается целочисленный...
0
73 / 73 / 10
Регистрация: 04.12.2008
Сообщений: 458
19.09.2010, 13:54 5
да, тут преобразование внутри возможно отрицательным.
и еще, просто как замечание

Цитата Сообщение от R@Z()r Посмотреть сообщение
IntPtr[] lol = new IntPtr[chars.Length];
лучше выделять память так:
C#
1
IntPtr[] lol = new IntPtr[chars.Length+1];
чтобы было еще одно место для нулевого конечного символа строки.
0
1318 / 991 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
19.09.2010, 15:14 6
R@Z()r, patriot2008, еще лучше прочесть что нибудь про указатели (управляемые или неуправляемые) и понять, что знание адреса каждого символа напрямую - "очень плохая" идея
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2010, 15:14
Помогаю со студенческими работами здесь

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
Народ подскажите такую вещь я написал программку для вставки элементов в массив при этом...

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива....

Класс динамического массива с проверкой выхода за границы массива
Задание такое: Создайте класс динамического массива, в котором реализована проверка выхода за...

Реализация защиты выхода за границы массива
Доброго времени! Прошу помочь разобраться с вопросом возникшим, при изучении C++. Я только начинаю...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru