, 나는 다음과 같은 실행스택 변수에 메모리를 어떻게 할당합니까? VS (자료)에
이int main(void)
{
char b[] = "123";
char a[] = "1234567";
printf("%x %x\n", b,a);
return 0;
}
가 나는 것을 볼 수 있습니다, a의 MEM 주소는 B + 3 (문자열의 길이)입니다. 이는 메모리가 틈없이 할당되었음을 보여줍니다. 그리고 이것은 최소한의 기억이 사용된다는 것을 보장합니다. 그래서 저는 이제 모든 컴파일러가 그렇게 할 것이라고 생각합니다. 여기이 추측을 확인하고 싶습니다. 누군가 제게 좀 더 공식적인 증거를 주거나 추측이 우연의 일치라고 말 할 수 있습니까?
실제로 어드레스 + 4 ㄱ 출력한다. 마지막에 널 종결 자. –
그들 사이에'short'와'int' 변수를 추가하여 이론이 유효한지 확인할 수 있습니다. – nos
예, hitesh, 16 진수 계산에 잘못했습니다. 감사. 그리고 더 많은 테스트를하고 있습니다. –