Как получить «ошибку шины»? - PullRequest
15 голосов
/ 15 января 2010

Я очень стараюсь получить ошибку шины.

Одним из способов является неправильный доступ, и я попробовал приведенные примеры здесь и здесь , но для меня нет ошибки программы выполняются просто отлично.

Есть ли какая-то ситуация, которая обязательно вызовет ошибку шины?

Ответы [ 12 ]

0 голосов
/ 15 января 2010

Ошибки шины возникают при попытке доступа к памяти, которая не адресуется вашим компьютером.Например, память вашего компьютера имеет диапазон адресов от 0x00 до 0xFF, но вы пытаетесь получить доступ к элементу памяти со значением 0x0100 или выше.

В действительности ваш компьютер будет иметь гораздо больший диапазон, чем от 0x00 до 0xFF.*

Чтобы ответить на ваш исходный пост:

Скажите мне ситуацию, которая обязательно приведет к ошибке шины.

В вашем коде индексируйте в памяти путь снаружиобъем максимального ограничения памяти.Я не знаю ... использовать какое-то гигантское шестнадцатеричное значение 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, проиндексированное в символ * ...

0 голосов
/ 15 января 2010

Простой, напиши в память не твою:

int main()
{
    char *bus_error = 0;

    *bus_error = 'X';
}

Мгновенная ошибка шины на моем PowerPC Mac [OS X 10.4, двойной 1 ГГц PPC7455], не обязательно на вашем оборудовании и / или операционной системе.

Есть даже статья в Википедии об ошибках шины, включая программу, которая их исправляет.

...