이 질문은 C 표준보다는 컴파일/연결과 관련이 있다고 가정합니다. 다른 가능한 공동이 존재하는 어떤 스택 코드 섹션, 데이터 섹션 후 위치해있는 명백한 경우를 제외스택 크기 계산 방법
#define ORDER(a,b,c) ((a) <= (b) && (b) <= (c))
int global;
int main()
{
int local;
unsigned long long dataAddr = (unsigned long long)&global;
unsigned long long stackAddr = (unsigned long long)&local;
unsigned long long codeAddr = (unsigned long long)main;
if (ORDER(stackAddr,dataAddr,codeAddr) || ORDER(codeAddr,stackAddr,dataAddr))
printf("Stack size is %llu bytes\n",dataAddr-stackAddr);
else if (ORDER(stackAddr,codeAddr,dataAddr) || ORDER(dataAddr,stackAddr,codeAddr))
printf("Stack size is %llu bytes\n",codeAddr-stackAddr);
else
printf("Stack size cannot be computed with this method\n");
return 0;
}
:
스택 크기를 계산하기위한 다음의 방법을 고려 이 방법으로?
하나 이상의 섹션이 예상대로 시작되지 않을 수 있습니까?
감사합니다.
"C"와 관련해서는 "스택"이 있다는 보장은 없으므로 문제가 될 수 있습니다. 적어도 이론적으로는. – unwind
@unwind : 고맙습니다.나는이 질문이 C 표준 (질문의 시작 부분에서 언급했듯이)보다는 컴파일/링 케이지와 더 관련이 있다고 가정한다. 컴파일러/링커가 실행 가능한 이미지를 생성하는 방식과 관련하여 이는 실용적인 질문입니다. –