|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Mar 2011
Messaggi: 3
|
[C] Semplice problema con l'allocazione dinamica
Ragazzi, scusate la banalità della domanda, ma è il mio primo esercizio con la memoria dinamica
Il seguente codice riempie un vettore con numeri da 1 a 40, n volte (3 volte) Non capisco il problema, arriva al printf (infatti stampa i numeri) e poi crasha... Avrò sbagliato il free? codice: Codice:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *mazzo;
int i=0;
int j=0;
int n=3;
int k=0;
mazzo=malloc(sizeof(int));
while (j<n)
{
while (i<40) {
//mazzo=malloc(sizeof(int));
mazzo[k]=i+1;
i=i+1;
k=k+1;
}
i=0;
j=j+1;
}
for (i=0; i<n*40; i++)
printf("\n%d", mazzo[i]);
free(mazzo);
system("pause");
return 0;
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
Al volo: così facendo stai allocando un solo intero, non un array.
mazzo = (int *) malloc (40 * sizeof(int)); Non ho controllato se ci sono altri errori.
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Mar 2011
Messaggi: 3
|
GByTe87 nn va ancora... cmq io voglio allocare elemento per elemento nel vettore, nn è possibile?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12920
|
Dovresti indentare meglio il codice...
Poi cosa significa allocare elemento per elemento il vettore? Se hai bisogno di un vettore di 40 elementi, li allochi tutti in una volta Comunque sbagli il ciclo for alla fine, la condizione i < n*40, unita al codice nel for, implica l'accesso ad un vettore di 120 elementi, quando tu ne allochi uno di 40! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:03.



















