Maison >développement back-end >C++ >Comment puis-je modifier la taille de la pile d'une application C sous Linux à l'aide de GCC ?

Comment puis-je modifier la taille de la pile d'une application C sous Linux à l'aide de GCC ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-22 19:22:13326parcourir

How Can I Change the Stack Size of a C   Application in Linux Using GCC?

Modification de la taille de la pile pour les applications C sous Linux avec GCC

Sous Linux, contrairement à macOS, l'option LD_FLAGS=-Wl,-stack_size est non reconnu par le compilateur GNU. Pour ajuster la taille de la pile pour une seule application C, la fonction setrlimit peut être utilisée par programme.

#include <sys/resource.h>

int main() {
  const rlim_t kStackSize = 16 * 1024 * 1024;  // 16 MB

  struct rlimit rl;
  int result;

  // Get current stack size limits
  result = getrlimit(RLIMIT_STACK, &rl);
  if (result == 0) {
    // If current stack size is less than desired, adjust it
    if (rl.rlim_cur < kStackSize) {
      rl.rlim_cur = kStackSize;
      result = setrlimit(RLIMIT_STACK, &rl);
      if (result != 0) {
        // Error handling
      }
    }
  }

  // Your code...

  return 0;
}

Lors de la mise en œuvre de cette solution, il est crucial de placer de grandes déclarations de variables locales dans les fonctions appelées depuis main() plutôt que que directement dans main(). Sinon, un débordement de pile peut se produire avant que la taille de la pile puisse être augmentée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn