Articles of stack de

Passer le pointeur à la variable locale pour fonctionner: est-ce sûr?

Par exemple: void func1(){ int i = 123; func2(&i); } void func2(int *a){ *a = 456; } Lorsque func1 appelle func1 , un pointeur sur une variable locale est transmis à func2 – le pointeur est pointé sur la stack. Est-ce sécuritaire pour les règles de C? Merci.

Quelle taille maximale de tableaux statiques est autorisée en C?

Dans mon algorithme, je sais travailler avec des tableaux statiques, pas dynamics. Mais j’atteins parfois la limite de la stack. Ai-je raison de dire que les tableaux statiques sont stockés dans la stack? Quels parameters affectent ma taille de stack maximale pour un programme C? Existe-t-il de nombreux parameters système qui affectent la taille maximale […]

Heap vs Stack en ce qui concerne la vitesse de lecture / écriture

Je viens de passer en revue un tas de threads stack / tas ici sur Stack Overflow (et d’autres sites aléatoires trouvés via Google), et pourtant je ne trouve pas de réponse qui apporte beaucoup (le cas échéant) de profondeur au problème de la vitesse de lecture / écriture. (la plupart des réponses et des […]

Pourquoi le compilateur alloue-t-il plus que nécessaire dans la stack?

J’ai un programme en C simple. Disons, par exemple, que j’ai un entier et un tableau de caractères de longueur 20. J’ai besoin de 24 octets au total. int main() { char buffer[20]; int x = 0; buffer[0] = ‘a’; buffer[19] = ‘a’; } La stack doit être alignée sur une limite de 16 octets, […]

Paramètres de fonction nombre maximum

Je n’ai trouvé aucune limitation des parameters de fonction de comptage dans la norme C99 et je suppose que cela est uniquement limité par la taille de la stack. Cependant, j’ai écrit un programme de test simple pour démontrer le comportement d’une fonction avec un grand nombre de parameters. Quand il est environ 10k, j’obtiens […]

retour du pointeur alloca

Ce code renvoie-t-il une référence non valide à une variable allouée sur la stack? Ou quoi: void *f(size_t sz) { return alloca(sz); } Ou est-ce un cas particulier traité par le support d’implémentation / compilateur f(alloca(size), alloca(size)) comme f(alloca(size), alloca(size)) serait?

Renvoyer une chaîne depuis une fonction C

J’ai un code simple. #define MY_STRING “Ssortingng example” char* ssortingng_return_function() { return MY_STRING; } Le code ci-dessus fonctionne mais je ne sais pas comment. Je pense que ssortingng_return_function () renvoie une adresse locale, qui serait libérée une fois la fonction terminée.

Réduire la charge de la stack, l’allocation de mémoire en C et transtyper facilement la valeur renvoyée par malloc ()

On sait que de grandes variables locales / globales peuvent entraîner un débordement de stack. Je sais que l’utilisation de pointeurs et l’allocation d’espace en mémoire permettent de résoudre ce problème. Mais est-ce la seule option? Que se passe-t-il si j’ai (ou ai besoin) de trop nombreux indicateurs de scope mondiale? En ce qui concerne […]

Quelle est la taille de la stack de la mémoire pour un programme donné, et existe-t-il des indicateurs de compilateur pouvant la définir?

Comme l’indique le titre: Existe-t-il une “règle générale” concernant la taille de la stack? J’imagine que la taille varie en fonction du système d’exploitation, de l’architecture, de la taille du ou des caches, de la quantité de RAM disponible, etc. Cependant, quelque chose peut être dit en général, ou y a-t-il un moyen de savoir […]

La mémoire de stack est-elle limitée?

Je passais par l’un des fils. Un programme est tombé en panne car il avait déclaré un tableau de 10 ^ 6 localement dans une fonction. La raison invoquée était l’échec de l’allocation de mémoire sur la stack, ce qui entraînait un crash. lorsque le même tableau a été déclaré globalement, cela a bien fonctionné […]