> 백엔드 개발 > C++ > GNU 컴파일러를 사용하여 Linux에서 C 애플리케이션의 스택 크기를 조정하는 방법은 무엇입니까?

GNU 컴파일러를 사용하여 Linux에서 C 애플리케이션의 스택 크기를 조정하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-20 02:52:08
원래의
595명이 탐색했습니다.

How to Adjust the Stack Size for C   Applications on Linux Using GNU Compiler?

GNU 컴파일러를 사용하여 Linux용 C 애플리케이션의 스택 크기 조정

Linux에서 GNU 컴파일러로 컴파일된 C 애플리케이션의 스택 크기 스택 오버플로 오류를 방지하기 위해 수정할 수 있습니다. OSX에서 사용되는 구문(LD_FLAGS= -Wl,-stack_size,0x100000000)이 SUSE Linux에서 작동하지 않을 수 있지만 동일한 결과를 얻을 수 있는 대체 방법이 있습니다.

한 가지 접근 방식은 프로그래밍 방식으로 스택 크기를 늘리는 것입니다. 응용 프로그램 자체. 이는 에서 제공하는 setrlimit 함수를 사용하여 수행할 수 있습니다. 헤더 파일. 예는 다음과 같습니다.

#include <sys/resource.h>

int main(int argc, char **argv) {
  const rlim_t kStackSize = 16 * 1024 * 1024; // min stack size = 16 MB
  struct rlimit rl;
  int result;

  result = getrlimit(RLIMIT_STACK, &rl);
  if (result == 0) {
    if (rl.rlim_cur < kStackSize) {
      rl.rlim_cur = kStackSize;
      result = setrlimit(RLIMIT_STACK, &rl);
      if (result != 0) {
        fprintf(stderr, "setrlimit returned result = %d\n", result);
      }
    }
  }

  // ...

  return 0;
}
로그인 후 복사

애플리케이션 내에서 스택 크기를 늘리면 스택 오버플로 오류 없이 복잡한 작업이나 대규모 데이터 구조를 처리하는 데 충분한 메모리 할당이 있는지 확인할 수 있습니다. 그러나 getrlimit/setrlimit 코드가 적용되기 전에 스택 오버플로를 방지하려면 main에서 호출되는 함수에서 지나치게 큰 지역 변수를 선언해야 한다는 점에 유의하는 것이 중요합니다.

위 내용은 GNU 컴파일러를 사용하여 Linux에서 C 애플리케이션의 스택 크기를 조정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿