이것은 Windows 7 64 비트에서 VC++ 2010과 함께 C 언어를 사용하고 있습니다.함수 주소가 일관됩니까?
프로그램의 모든 실행에서 동일한 주소가되도록 함수의 주소 (c 링크)에 안정적이고 일관되게 액세스 할 수있는 방법이 있습니까?
이것은 Windows 7 64 비트에서 VC++ 2010과 함께 C 언어를 사용하고 있습니다.함수 주소가 일관됩니까?
프로그램의 모든 실행에서 동일한 주소가되도록 함수의 주소 (c 링크)에 안정적이고 일관되게 액세스 할 수있는 방법이 있습니까?
런타임에 주소를 얻은 경우 주소가 안정적으로 유지되어야합니다. 다음 번에 에이 달라질 수 있습니다.
실행 코드가 예측할 수없는 주소로로드 될 수있는 기능이 OS에 있습니다 (부분적으로 두 개의 DLL에 동일한 기본 주소가 필요할 수 있기 때문에 부분적으로 보안을 위해).
아니요, 대부분의 최신 OS에 대해 매번 동일한 주소에 기능이로드된다는 보장이 없기 때문입니다. 일부 임베디드 장치에서는 링커 파일에서 함수의 고정 주소를 정의하면이 문제를 해결할 수 있습니다.
하지만 왜 귀찮았습니까? 변수의 주소와 같은 함수의 주소를 취할 수 있습니다.
void func(int a)
{
a=5;
}
void main()
{
// In case you don't know or don't care about the signature of the function.
void* p = func;
// In case you do care and might want to call the function
// at some point through the pointer.
void (*f)(int) = func;
printf("%p %p",p, f);
}
... 그리고 어떤 목적으로? 그리고 ... 당신은 기능과 발신자를 둘 다 소유하고 있습니까? – reuben
@reuben : 주소를 데이터베이스에 저장 하시겠습니까? :-D – Vlad
그냥 물어보십시오. –