KokosSPb
81 / 84 / 3
Регистрация: 03.02.2011
Сообщений: 468
|
|||||||||||
#1 | |||||||||||
Непонятки с классами - C++24.08.2013, 18:41. Просмотров 2646. Ответов 14
Метки нет Все метки)
(
Народ, уже всё перерыл, впервые с проблемой столкнулся
![]() Создаю консольное приложение: файл class.h
1. TestClass.exe вызвал срабатывание точки останова. 2. Необработанное исключение по адресу 0x77E7AA3C (ntdll.dll) в TestClass.exe: 0xC0000374: Куча была повреждена (параметры: 0x77E8FE38). 3. Необработанное исключение по адресу 0x60911360 (msvcp110.dll) в TestClass.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x0000001C. Это простейшие ошибки доступа к памяти, ну например - если объявлен массив в 10 элементов, а я обращаюсь к 20тому элементу, то я тоже такие ошибки увижу, но тут то что? ![]() MSVS2012
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
24.08.2013, 18:41 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Непонятки с классами (C++):
14
непонятки с for - C++ непонятки - C++ непонятки с указателями - C++ Непонятки с указателями - C++ Непонятки со списком - C++ непонятки с делением:( - C++ |
alsav22
5434 / 4829 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
24.08.2013, 18:49 | #2 | |||||
Наверное, так нужно, в конструкторах:
1
|
KokosSPb
81 / 84 / 3
Регистрация: 03.02.2011
Сообщений: 468
|
|
24.08.2013, 18:53 [ТС] | #3 |
Блин, а я ведь проверял, но почему-то ошибка оставалась, сейчас опять поменял, так уже - поскольку вариантов больше не видел и ошибка ушла... Как так?
Массив то всё равно создается и с круглыми и с квадратными скобками
0
|
alsav22
5434 / 4829 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
24.08.2013, 18:58 | #4 | |||||
Разве?
Добавлено через 3 минуты
1
|
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
|
||||||||||||||||
24.08.2013, 19:01 | #5 | |||||||||||||||
1
|
KokosSPb
81 / 84 / 3
Регистрация: 03.02.2011
Сообщений: 468
|
|
24.08.2013, 19:02 [ТС] | #6 |
0
|
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
|
|
24.08.2013, 19:04 | #7 |
KokosSPb, operator new []
1
|
alsav22
5434 / 4829 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
24.08.2013, 19:05 | #8 |
0
|
KokosSPb
81 / 84 / 3
Регистрация: 03.02.2011
Сообщений: 468
|
|
24.08.2013, 20:41 [ТС] | #9 |
Создал int массив и так и так, (через () и через []), заполнил его, обратился к элементам, в обоих случаях всё сработало
0
|
alsav22
5434 / 4829 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
24.08.2013, 20:48 | #10 |
Это не проверка того, что массив был создан. Всё что вы описали (при использовании ()), было за пределами выделенной памяти. Что работало, дело случая. Может работать, может не работать (тема с чего началась?). Компилятор не отслеживает выход за границу выделенной памяти (ошибка возникает во время работы программы), это на совести программиста.
1
|
alsav22
5434 / 4829 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
24.08.2013, 20:59 | #11 | |||||
Вот пример выхода за пределы выделенной памяти:
0
|
KokosSPb
|
24.08.2013, 22:31
[ТС]
#12
|
Не по теме: Просто при создании int массива он ошибки не выдает про выход за пределы выделенной памяти
0
|
alsav22
5434 / 4829 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
24.08.2013, 22:38 | #13 |
1
|
KokosSPb
81 / 84 / 3
Регистрация: 03.02.2011
Сообщений: 468
|
|
25.08.2013, 10:40 [ТС] | #14 |
0
|
alsav22
5434 / 4829 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
25.08.2013, 15:26 | #15 | |||||
Имеете ввиду, что при работе ошибки нет, если есть выход за границу? Ещё раз повторю: может быть, может не быть. Зависит от разного, например от того, как далеко выход, и что там лежит. В любом случае - это кривой код. Изменяем код, в 12 посте на такой:
1
|
25.08.2013, 15:26 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
25.08.2013, 15:26 |
Привет! Вот еще темы с ответами:
15
Непонятки с wchar_t - C++ Непонятки по ссылкам - C++
Непонятки с синтаксисом - C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |