Pull to refresh
  • by relevance
  • by date
  • by rating

Segmentation Fault (распределение памяти компьютера)

NIX corporate blog Website development *Programming *
Translation


Когда я делаю ошибку в коде, то обычно это приводит к появлению сообщения “segmentation fault”, зачастую сокращённого до “segfault”. И тут же мои коллеги и руководство приходят ко мне: «Ха! У нас тут для тебя есть segfault для исправления!» — «Ну да, виноват», — обычно отвечаю я. Но многие ли из вас знают, что на самом деле означает ошибка “segmentation fault”?

Чтобы ответить на этот вопрос, нам нужно вернуться в далёкие 1960-е. Я хочу объяснить, как работает компьютер, а точнее — как в современных компьютерах осуществляется доступ к памяти. Это поможет понять, откуда же берётся это странное сообщение об ошибке.

Вся представленная ниже информация — основы компьютерной архитектуры. И без нужды я не буду сильно углубляться в эту область. Также я буду применять всем известную терминологию, так что мой пост будет понятен всем, кто не совсем на «вы» с вычислительной техникой. Если же вы захотите изучить вопрос работы с памятью подробнее, то можете обратиться к многочисленной доступной литературе. А заодно не забудьте покопаться в исходном коде ядра какой-нибудь ОС, например, Linux. Я не буду излагать здесь историю вычислительной техники, некоторые вещи не будут освещаться, а некоторые сильно упрощены.
Читать дальше →
Total votes 74: ↑71 and ↓3 +68
Views 79K
Comments 10

Вся правда об ОСРВ. Статья #14. Разделы памяти: введение и базовые службы

Programming microcontrollers *
Translation


Разделы памяти упоминались ранее в одной из предыдущих статей (#6), где производилось сравнение со стандартной функцией языка C malloc(). Раздел (partition) – это область памяти, получаемая из пула разделов (пула памяти). Разделение памяти предоставляет гибкий способ надежного и детерминированного выделения и освобождения памяти.
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Views 1.5K
Comments 0

Вся правда об ОСРВ. Статья #15. Разделы памяти: службы и структуры данных

Programming microcontrollers *
Translation


В этой статье мы продолжаем рассматривать разделы памяти ОСРВ.

Nucleus RTOS имеет три вызова API, предоставляющих служебные функции, связанные с пулами разделов памяти: возвращение информации о пуле разделов, возвращение числа пулов разделов в приложении и возвращение указателей на все пулы разделов в приложении. Первые два вызова реализованы в Nucleus SE.
Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views 1.6K
Comments 2