포인터를 사용하여 난 의심 나는 프로그램에서 변수 메모리 어드레스을 확인 포인터에 해당 주소를 저장할 수 있다는 것이 가능하다 그 위치에 저장된 값을 출력 할 수 있습니다.직접 메모리 액세스, I는 <strong>C++ 포인터</strong>와 재생 된 어드레스
프로그램 1 :
int t1 = 34;
int t2 = 0;
std::cout << &t1;
std::cin>>t2;
이것은 제 프로그램 I 입력 COUT 의해 출력 된 제 프로그램 T1의 어드레스 .
프로그램 2 :
int* t3 = (int*)address_of_t1 // address of t1 is not a function....it will be replaced by the address returned by first program
int out = *t3;
cout <<out;
내가 처음 프로그램을 실행하지 않고는 내가 두 번째 프로그램을 실행 동시에 그런 .. 을 계속 실행, 입력 대기 할 수 있지만, 0
두 번째 프로그램이 항상 출력, 그것은 결코 첫 번째 프로그램의 t1
값을 보여줍니다.
최신 OS에서이 프로그램을 실행하는 경우 기본적으로 관련없는 두 프로세스의 메모리 공간이 서로 얽히게됩니다. – StoryTeller
"직접 메모리 액세스"라는 용어는 [특별한 의미] (https://en.wikipedia.org/wiki/Direct_memory_access)가 있으므로 불행합니다. – MSalters