2013-06-05 1 views
3

C에서 사용되는 메모리 양에 대해 return 1;을 사용하는 함수가 많이있는 경우 각각 1 리터럴이 저장되거나 1 중 하나입니까?여러 개의 동일한 리터럴과 const를 사용한 메모리 사용

I.E. 파일 범위에서 static const int numOne = 1을 사용한 다음 기능을 return numOne;으로 사용하는 것이 더 좋습니까?

컴파일러에 따라 다르면 TI의 C28x 컴파일러를 사용하여 TI MCU 용으로 컴파일하고 있습니다.

이 질문은 C 이 아니라 C++에 관한 것입니다.

+1

리터럴은 데이터 메모리에 저장 공간이 없습니다. 코드에 삽입됩니다. 레지스터에 존재할 수 있습니다. 난 그게 또한 당신이 리터럴 (문자열 리터럴 예외입니다 주소) 걸릴 이유라고 생각합니다 –

+0

내 모든 문자열 리터럴 내 .econst 섹션을 막히는 무엇 같아요 :) – Toby

+0

컨트롤러가 램을 얼마나합니까? contrller에는 힙 섹션과 RAM 및 플래시에 대한 모든 것이 없기 때문입니다. 나는 문자열 리터럴이 플래시에 저장 될 것이라고 생각한다. –

답변

5

아니요, 일반적으로 리터럴은 전혀 저장되지 않습니다. 특히이 작은 정수 상수는 어셈블러에 대한 직접 매개 변수로 사용되기 때문에 일부 데이터 섹션이 아니라 코드에 직접 포함됩니다.

+1

에 올려 놓으면 장치가로드되고 해체 인 'MOVB AL, # 0x0'이 확인됩니다. 감사 – Toby