PDA

Visualizza la versione completa : Stack overflow in C


piergiuseppe24
01-12-2015, 23:34
In che modo posso dare un valore molto elevato al numero di colonne di questa matrice (es. 100000) senza che in esecuzione abbia un segmentation fault? :dh:


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void){
int*pos = NULL, r=0, c=0, t=0;
int i, j;
printf("Inserisci il numero di colonne: ");
scanf("%d",&c);
printf("Inserisci il numero di righe: ");
scanf("%d",&r);
pos =(int*)calloc(r*c,sizeof(int));
srand48(time(0));
for(i=0; i<r; i++){
for(j=1; j<c; j++){
if(((double)lrand48()/RAND_MAX)>0.5){
(*(pos+c*i+j))=(*(pos+c*i+(j-1)))+1;
}
else(*(pos+c*i+j))=(*(pos+c*i+(j-1)))-1;
}
}
}

oregon
01-12-2015, 23:59
Questo codice non genera stack overflow con 100000 colonne e 2 righe ...

Dato che allochi dinamicamente devi solo avere la memoria disponibile ... ma non usi lo stack in questo modo.

P.S. Ma tu studi il C o lo subisci ?

MItaly
02-12-2015, 01:36
P.S. Ma tu studi il C o lo subisci ?
Scusa ma questa troppo bella, te la rubo. :D

minomic
02-12-2015, 19:41
P.S. Ma tu studi il C o lo subisci ?

Concordo: questa eccezionale!

Loading