Соответствует ли ошибка Segmentation fault в C исключению AccessViolationException в C#?

Обе ошибки - о промахе в памяти. Правильно ли понимаю, что они одинаковы по причинам?


Ответы (1 шт):

Автор решения: Eugene X

И да, и нет. Оба указывают на то что ты вышел за пределы разрешённой памяти. Но так как C# сам управляет памятью переменных, то по сути нечего плохого произойти не может. А SementationFault означает что ты вышел за пределы памяти и натворил бед. Думаю стоит обратится к ASM что-бы понять произошедшее.

section .data
  msg db "Hello, World!"

section .text
  global _start

_start:
  mov rax, 1
  mov rdi, 1
  mov rsi, msg
  mov rdx, 13
  syscall

  mov rax, 60
  mov rdi, 0
  syscall

Тут становится очевидным что когда ты выходишь за пределы секции .data, то на прямую попадаешь в секцию с кодом, и ломаешь уже ее. Что физически невозможно, потому что это RO память приложения и программа понимает что пора падать, пока не началось месиво из инструкций.

→ Ссылка