[C++] 클래스 메모리 주소를 클래스로 변환하기

2023. 3. 11. 01:00·Etc
728x90
반응형

이번 포스팅에서는 C++클래스의 메모리 주소를 생성해두었던 클래스로 변환하는 방법에 대해 설명하겠습니다.

 

먼저 C++ 클래스의 주소는 this 키워드를 통해 가져올 수 있습니다.

class Sample{
    public:
        int a; 
        int b;

        long get_addr(){
            return (long)this;
        }
};

위 Sample 이라는 클래스 내의 get_addr()함수가 클래스 주소를 리턴해 주는 함수 입니다. retrun this를 통해 클래스 주소를 리턴해줄 수 있고 저는 주소값을 long형으로 받기 위해 this 앞에 long을 붙혀주었습니다.

 

이렇게 받아온 주소를 다시 클래스로 만들어 보겠습니다. 

long get_class(){

	Sample *sample = new Sample();
    sample->a = 3;

    return sample->get_addr();

}

void changeaddr2class(){
	long addr;
    addr = get_class();
    Sample *sample = reinterpret_cast<Sample *>(addr);
    
    cout << sample->a << endl;  // 3
  
}

먼저 get_class()함수에서 Sample  클래스를 하나 만들고 주소값을 리턴합니다. changeaddr2class함수에서는 이 주소 값을 받을 addr변수를 따로 지정해주었습니다. 단순 숫자값인 addr을 클래스 주소로서 사용하여 get_class()함수에서 만든 sample 클래스에 접근하려면 reinterpret_cast 를 이용하면 됩니다! 

 

실제로 changeaddr2class() 함수에서 sample의 클래스 변수인 a 접근해 보면 get_class()함수에서 초기화 시켰던 3이 출력되는 것을 확인할 수 있습니다!

728x90
반응형
저작자표시 (새창열림)

'Etc' 카테고리의 다른 글

sd-x2-latent-upscaler 모델로 image upscale 하기  (2) 2024.11.21
safetensor 모델을 diffusers에서 사용 가능하게 변경하기  (0) 2024.11.11
[JNI] jbyte를 C++의 vector<uchar>로 변환하는 방법  (0) 2023.03.12
[JNI] JNI 사용법 및 튜토리얼 (2)  (0) 2023.03.12
[JNI] JNI 사용법 및 튜토리얼 (1)  (3) 2023.03.11
'Etc' 카테고리의 다른 글
  • safetensor 모델을 diffusers에서 사용 가능하게 변경하기
  • [JNI] jbyte를 C++의 vector<uchar>로 변환하는 방법
  • [JNI] JNI 사용법 및 튜토리얼 (2)
  • [JNI] JNI 사용법 및 튜토리얼 (1)
ga.0_0.ga
ga.0_0.ga
    반응형
    250x250
  • ga.0_0.ga
    ##뚝딱뚝딱 딥러닝##
    ga.0_0.ga
  • 전체
    오늘
    어제
    • 분류 전체보기 (181)
      • Paper Review (51)
        • Video Scene Graph Generation (6)
        • Image Scene Graph Generation (18)
        • Graph Model (5)
        • Key Information Extraction (4)
        • Fake Detection (2)
        • Text to Image (1)
        • Diffusion Personalization (4)
        • etc (11)
      • AI Research (49)
        • Deep Learning (30)
        • Artificial Intelligence (15)
        • Data Analysis (4)
      • Pytorch (10)
      • ONNX (5)
      • OpenCV (2)
      • Error Note (34)
      • Linux (2)
      • Docker (3)
      • Etc (7)
      • My Study (16)
        • Algorithm (10)
        • Project (4)
        • Interview (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Activation Function
    Logistic regression
    tensorflow
    그래프신경망
    pandas
    Inductive bias
    HRNet
    GCN
    contiguous
    JNI
    dataset
    활성화 함수
    차원의 저주
    ONNX
    forch.nn.functional
    dataloader
    RuntimeError
    transformer
    3dinput
    permute
    pytorch
    나이브 베이즈 분류
    오차 역전파
    정규화
    fine tuning
    torch.nn
    linear regression
    TypeError
    i3d
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
ga.0_0.ga
[C++] 클래스 메모리 주소를 클래스로 변환하기
상단으로

티스토리툴바