Pourquoi une grande longueur variable tableau a une valeur fixe -1, même s'il est affecté au C?
Je suis en train de faire un tableau de taille variable en c.
Le tableau de garde sur le retour comme ayant une valeur de -1.
Ce que je veux faire est de faire un tableau de taille size
puis ajoutez progressivement des valeurs. Ce que je fais mal?
int size = 4546548;
UInt32 ar[size];
//soundStructArray[audioFile].audioData = (UInt32 *)malloc(sizeof(UInt32) * totalFramesInFile);
//ar=(UInt32 *)malloc(sizeof(UInt32) * totalFramesInFile);
for (int b = 0; b < size; b++)
{
UInt32 l = soundStructArray[audioFile].audioDataLeft[b];
UInt32 r = soundStructArray[audioFile].audioDataRight[b];
UInt32 t = l+r;
ar[b] = t;
}
double de stackoverflow.com/questions/448844/variable-sized-arrays-in-c
Le Code a l'air correct, mais la taille est grande. Êtes-vous sûr que votre programme a 18MO de pile à utiliser?
J'ai été confus au sujet de la façon dont beaucoup d'éléments que je veux que mon tableau pour contenir, et la taille réelle.
Le Code a l'air correct, mais la taille est grande. Êtes-vous sûr que votre programme a 18MO de pile à utiliser?
J'ai été confus au sujet de la façon dont beaucoup d'éléments que je veux que mon tableau pour contenir, et la taille réelle.
OriginalL'auteur dubbeat | 2010-11-24
Vous devez vous connecter pour publier un commentaire.
Ce que vous avez besoin est un tableau dynamique. Celui que vous pouvez allouer une taille initiale, puis utilisez
realloc
pour augmenter la taille de celui-ci par un certain facteur le cas échéant.I. e.,
Utiliser cette fonction pour grandir:
Qui est correct.
OriginalL'auteur jer
Vous devriez probablement attribuer (et donc gratuit) le tableau dynamiquement, comme suit:
OriginalL'auteur Wyatt Anderson
si vous faites de la taille d'un int const cela devrait fonctionner. Aussi, si votre tableau est à l'intérieur d'une fonction et la taille est un argument de ladite fonction, qui devrait fonctionner aussi.
OriginalL'auteur Hervé
C ne permet pas une variable à être utilisé lors de la définition d'une matrice de taille, ce que vous devez faire est d'utiliser
malloc
, cela devrait vous donner une idée:N'oubliez pas de le libérer par la suite
C (la version actuelle, C99) ne lui permettent. C89 ne l'est pas. Les compilateurs qui ne prennent pas en charge, il doit donner un message d'erreur à la compilation ("expression Constante prévu", ou similaire), compile pas, mais vous donnent une valeur inattendue de -1. Quel compilateur que vous utilisez?
Ah, mon mauvais alors. Vrai depuis qu'il n'était pas une erreur de compilation
son gcc 4.2
dans ce cas, VLAs sont pris en charge (avec -std=c99), et je suis sûr que le problème ici, c'est soit que vous êtes en cours d'exécution hors de la pile et de quelque chose d'indéfini qui se passe (je m'attends à une erreur de segmentation+coredump, mais on ne sait jamais), ou bien il y a un peu sans rapport de bogue dans le code pour remplir le tableau, qui est à l'origine de l'inattendu valeur -1. La longueur Variable des tableaux (Blaise) sont assez difficiles à utiliser en toute sécurité, personnellement, je pense qu'ils sont un peu inutile.
OriginalL'auteur Argote