|
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
|
|||||||||||
Ошибка сегментации при выходе за пределы динамического массива23.12.2012, 08:56. Показов 3464. Ответов 28
Метки нет (Все метки)
Всем привет.
Вопрос: что нужно сделать (если это возможно), чтобы ВСЕГДА при выходе за пределы динамического массива была ошибка сегментации? Данный вопрос у меня возник на следующем примере (по идее должен выводить одну и туже матрицу 2 раза):
0
|
|||||||||||
| 23.12.2012, 08:56 | |
|
Ответы с готовыми решениями:
28
Ошибка о выходе за пределы массива Почему работает программа при выходе за пределы массива? "Неопределенное поведение" при выходе вводимых данных за пределы массива |
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 07.01.2013, 11:07 | |
|
Psilon, я Вас опять (так же как с malloc(0)) не понимаю. Какая связь между electric-fence(сторонние средство поиска ошибок, которому без разницы как именно адресуется память, любой выход за _верхнюю_ границу оно успешно ловит) и тем что Вы тут написали?
0
|
|
|
Master of Orion
|
|
| 07.01.2013, 18:45 | |
|
"C" славится быстротой, а это обеспечивается отсутствием всевозможных проверок, GC и прочего высокоуровневого хлама. Если их добавлять, то С начинает превращаться в калечного и угробищного клона С#
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||
| 07.01.2013, 20:23 | ||
|
0
|
||
|
3 / 3 / 1
Регистрация: 04.02.2011
Сообщений: 37
|
||||
| 08.01.2013, 11:41 | ||||
|
1
|
||||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|||||
| 08.01.2013, 12:52 | |||||
|
Памяти выделяется всегда на 1 страницу больше, на эту "лишнюю" страницу ставиться защита на запись/чтение, возвращается указатель на адрес конца 1й страницы минус остаток от разницы размера блока в байтах и размера блока в страницах умноженный на размер одной страницы. Картинко для malloc(1) без учета настроек выравнивания: [страница 1 разрешены чтение и запись][страница 2 чтение и запись запрещенны] [xxx...xxx размер=4095 байт, 1 байт, указатель на который нам вернут] Т.к. защитить часть страницы не возможно, доступ к любому из обозначенных как "x" байт _не_ ловиться. Нужно _совершенно_ иное решение.
1
|
|||||
|
3 / 3 / 1
Регистрация: 04.02.2011
Сообщений: 37
|
|||
| 08.01.2013, 14:30 | |||
|
[страница 1 чтение и запись запрещенны][страница 2 разрешены чтение и запись] но это нужно для редкого и малоупотребляемого варианта и выход за верхний диапазон перестанет работать. Добавлено через 2 минуты Кстати, на моей машине efence выделяет 4кб на один, т.е. это в 2 раза меньше чем должно быть.
0
|
|||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|||
| 08.01.2013, 15:00 | |||
|
0
|
|||
|
3 / 3 / 1
Регистрация: 04.02.2011
Сообщений: 37
|
|||||||
| 08.01.2013, 16:34 | |||||||
0
|
|||||||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||
| 08.01.2013, 19:05 | ||
|
Я конечно смотрел efance довольно давно, и в принципе что-то могло поменяться... было как-то так: на старте выделяется мегабайт (может больше, не помню уже) под будущие вызовы malloc(), при отработке malloc() ищется свободная/создается набор структур служебных блоков размером 1 страницу (это раз), ищется свободная память подходящего размера с учетом страницы под защиту(это уже минимум 2 страницы), и собственно ставиться защита на последнюю страницу найденного куска (это третья). Если так интересно глянуть как оно работает, то логично взять и посмотреть Помнится там всего то 2 маленьких файла кода и капелька заголовков.
0
|
||
| 08.01.2013, 19:05 | |
|
Прокрутка в canvas при выходе содержимого за пределы Изменение выравнивания при выходе текста за пределы контейнера Алгоритм движения ракеты при выходе за пределы Земли
Выход за пределы динамического массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов
• Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp
• Смежный проект:. . .
|
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат
Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
|
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1)
Сложность: Medium
Источник: LeetCode 380
Задача
Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
|
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли.
Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
|
|
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack
Сложность: Medium
Источник: LeetCode 155
Задача:
Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1).
Методы:
|
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача
Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
Сигнатура
func Fetch(urls string, maxConcurrent int) Result
Пример
urls :=. . .
|
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition)
Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
|
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
|