Duże tablice w C -> Segmentation fault

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
demogorgon
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 30 gru 2006, 13:01
Płeć: Mężczyzna
Wersja Ubuntu: 7.04
Środowisko graficzne: GNOME

Duże tablice w C -> Segmentation fault

Post autor: demogorgon »

Witam,

mam problem z programem wymagającym implementacje dużych tablic. Konkretny przykład (przykład konkretnego błędu a nie programu który muszę napisać):

Kod: Zaznacz cały

#include <stdio.h>

int main(void)
{

	double a[1000][1000], b[1000][1000];

	int i=5;

	printf("%d", i);

	return 0;
}
po kompilacji gcc i uruchomieniu zwraca błąd: "Segmentation fault"

wystarczy zmienić rozmiar tablicy na mniejsze lub zadeklarować jedną tablicę zamiast dwóch lub zmienić typ tablicy na float to już jest wszystko ok. Problemem zapewne jest zbyt duża ilość zajmowanej pamięci przez tablicę. Jak problem rozwiązać?
Awatar użytkownika
pixelenter
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 194
Rejestracja: 31 gru 2009, 15:41
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: Duże tablice w C -> Segmentation fault

Post autor: pixelenter »

Double - 8bajtów
Float - 4bajty
zadeklaruj tablice:
float a[4000][4000], b[4000][4000];
to też dostaniesz SF.
Problemem zapewne jest zbyt duża ilość zajmowanej pamięci przez tablicę
Udało mi się to obejść wskaźnikami, lecz przy wielowymiarowych tablicach będzie to mało wygodne. Innego wyjścia nie widzę, niech mądrzejsi się wypowiedzą.
http://uwolnijlaptopa.pl
http://counter.li.org/cgi-bin/certificate.cgi/528644
kklimonda
Zakręcona Traszka
Zakręcona Traszka
Posty: 585
Rejestracja: 20 kwie 2008, 04:21
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME

Odp: Duże tablice w C -> Segmentation fault

Post autor: kklimonda »

Jak rozwiązać problem? Nie alokować tak dużej tablicy na stosie tylko dynamicznie.
Ew. możesz to obejść zmieniając limity - ulimit -s unlimited wyłączy ten konkretny, ale to sprawi, że twój program nie odpali się nigdzie gdzie są nałożone limity.
demogorgon
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 30 gru 2006, 13:01
Płeć: Mężczyzna
Wersja Ubuntu: 7.04
Środowisko graficzne: GNOME

Odp: Duże tablice w C -> Segmentation fault

Post autor: demogorgon »

Ok, dzięki wielkie. W takim razie pozostaje dynamiczna alokacja pamięci:)
Awatar użytkownika
borzole
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 127
Rejestracja: 10 sie 2010, 11:48
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: Duże tablice w C -> Segmentation fault

Post autor: borzole »

luknij tu: viewtopic.php?t=137350 bodajże ten sam problem
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 19 gości