Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Niz od 10 miliona elemenata

[es] :: C/C++ programiranje :: C/C++ za početnike :: Niz od 10 miliona elemenata

[ Pregleda: 2295 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

proka_92
proka_92
Smederevo

Član broj: 153372
Poruke: 69
77.46.216.*



+4 Profil

icon Niz od 10 miliona elemenata23.01.2010. u 18:41 - pre 173 meseci
Dakle treba da napravim niz sa max 10 miliona elemenata, medjutim kada pokrenem program izbacuje mi "Segmentation fault", i program se ne izvrsava... Kako da odradim to?
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Niz od 10 miliona elemenata23.01.2010. u 18:49 - pre 173 meseci
Pokazi kod.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Niz od 10 miliona elemenata23.01.2010. u 19:08 - pre 173 meseci
Potrazi po netu pojmove stack i heap u kontekstu alokacije memorije.

http://en.wikipedia.org/wiki/Buffer_overflow
http://www.learncpp.com/cpp-tutorial/79-the-stack-and-the-heap/

Code:

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

int main ()
{
    /* velicina niza */
    unsigned long n;

    /* niz */
    char * buffer;

    /* unos zeljene velicine niza */
    printf ( "Velicina niza? " );
    scanf ( "%lu", &n );

    /* rezervisanje prostora */
    buffer = (char*) malloc ( n );
    if ( buffer == NULL )
        /* neuspesan povratak */
        exit ( 1 );

    /* OVDE TVOJ KOD */

    /* oslobadjanje prostora */
    free ( buffer );

    /* uspesan povratak */
    return 0;
}


EDIT : velicina stringa ---> velicina niza

[Ovu poruku je menjao X Files dana 24.01.2010. u 15:04 GMT+1]
 
Odgovor na temu

proka_92
proka_92
Smederevo

Član broj: 153372
Poruke: 69
77.46.217.*



+4 Profil

icon Re: Niz od 10 miliona elemenata24.01.2010. u 12:30 - pre 173 meseci
Koliko sam ja skapirao (ispravi me ako gresim), ovo sto si mi ti napisao je za stringove, a ja u niz treba da smestam sumu cifara brojeva iz odredjenog intervala.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Niz od 10 miliona elemenata24.01.2010. u 14:13 - pre 173 meseci
Evo, sad sam ispravio, ali svejedno je.

Kada kazes:
int niz[10000000];
... to bi trebalo da bude kreirano na stacku-u, sto je prakticno nemoguce, jer je taj deo memorije predvidjen za podatke nazovi 'lokalnog' karaktera, koji ce trajati sve dok se ne izadje iz boloka.

Kada kazes:
// ...
buffer = (int*) malloc ( n * sizeof(int) );
// ...
... rezervise se zeljena memorija (ako je OS ima na raspolaganju) na heapu. Kasnije je tvoja odgovornost vezana za pravovremeno oslobadjanje te memorije (free ( buffer );), da ne bi bespotrebno opterecivao resurse racunara dok tvoj program radi.

Code:

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

int main ()
{
    /* velicina niza */
    unsigned long n;

    /* niz */
    int * buffer;

    /* unos zeljene velicine niza */
    printf ( "Velicina niza? " );
    scanf ( "%lu", &n );

    /* rezervisanje prostora */
    buffer = (int*) malloc ( n * sizeof(int) );
    if ( buffer == NULL )
        /* neuspesan povratak */
        exit ( 1 );

    /* OVDE TVOJ KOD */

    /* oslobadjanje prostora */
    free ( buffer );

    /* uspesan povratak */
    return 0;
}
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Niz od 10 miliona elemenata

[ Pregleda: 2295 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.