Ошибка сегментации на сервере, а не на локальной машине - PullRequest
3 голосов
/ 13 марта 2010

Как указано в заголовке, программа работает на моем локальном компьютере (Ubuntu 9.10), но не на сервере (Linux). Это хостинговый пакет Godaddy.

Пожалуйста, помогите ..

Вот код:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    long offset;
    FILE *io;
    unsigned char found;
    unsigned long loc;

    if (argc != 2)
    {
        printf("syntax: find 0000000\n");
        return 255;
    }

    offset = atol(argv[1]) * (sizeof(unsigned char)+sizeof(unsigned long));

    io = fopen("index.dat","rb");
    fseek(io,offset,SEEK_SET);
    fread(&found,sizeof(unsigned char),1,io);
    fread(&loc,sizeof(unsigned long),1,io);

    if (found == 1)
        printf("%d\n",loc);
    else
        printf("-1\n");

    fclose(io);

    return 0;
}

РЕДАКТИРОВАТЬ: Это не моя программа. Я хотел бы знать достаточно C, чтобы исправить это, но я в срок. Эта программа предназначена для поиска первого вхождения 7-значного числа в последовательности PI, index.dat содержит огромное число массива => позиция.

http://jclement.ca/fun/pi/search.cgi

РЕДАКТИРОВАТЬ 2: Я использовал обновленный код с тестом для нулевого указателя, все еще получая те же результаты. Программа работает нормально на моей локальной машине, эта ошибка происходит только на сервере.

Ответы [ 11 ]

0 голосов
/ 13 марта 2010

Может быть, вам следует попытаться выделить немного памяти для найденных и локальных переменных?

...