Что такое «Ошибка шины?» - PullRequest
3 голосов
/ 13 апреля 2011

Что такое «Ошибка шины?»

Ниже приведен мой код.

Большое спасибо за ваше время!

    PROGRAM numbersgen
        IMPLICIT NONE

            !Variable declaration
            INTEGER, DIMENSION(:,:),ALLOCATABLE::numarray
            INTEGER, DIMENSION(:),ALLOCATABLE::temparray
            INTEGER:: numrolls, numexps
            INTEGER:: i=0, j=0
            REAL:: avg=0, sdv=0, variance=0, sum=0
            INTEGER:: k, min, pos, temp


            PRINT*, "Enter the number of experiments to simulate: "
            READ*, numexps

            PRINT*, "Enter the number of rolls per experiment: "
            READ*, numrolls



     ALLOCATE(numarray(numexps,numrolls))

            -----

    ALLOCATE(temparray(numrolls))


            -----       



        END PROGRAM

Ответы [ 3 ]

4 голосов
/ 13 апреля 2011

Ваше распределение temparray слишком поздно. Попробуйте это:

ALLOCATE(numarray(numexps,numrolls), temparray(numrolls))

и удалите второе ALLOCATE.

Чтобы отладить его в следующий раз, скомпилируйте с параметром -g, например:

$ gfortran -g code.f95

и запустить его под отладчиком:

$ gdb a.out
gdb> run

затем будет указано место катастрофы.

4 голосов
/ 13 апреля 2011

Ошибка шины, которую вы получаете здесь, возникает при копировании из numarray в temparray, прежде чем вы выделите temparray.Просто переместите строку ALLOCATE (temparray (numrolls)) перед входом в цикл.

Хороший комментарий об ошибке шины см. В Ошибка сегментации .

4 голосов
/ 13 апреля 2011

Похоже, temparray используется до его выделения.

Чтобы ответить на ваш вопрос «что такое ошибка шины?» : обычно это означает, что ваша программа пыталась получить доступ к несуществующему адресу или адресу, который не имеет правильного выравнивания для этой архитектуры (например, попытка прочитать 32-битное значение из адреса, который не выровнен по кратному 4 байтам).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...