zoukankan      html  css  js  c++  java
  • 指针转换

    指针转换

    今天在看hotspot代码时,有处没能看明白,于是请教青老师,给出了解答是指针转换的语法

    share/vm/memory/defNewGeneration.cpp DefNewGeneration::collect
    share/vm/memory/genOopClosures.inline.hpp FastScanClosure::do_oop_work
    share/vm/memory/defNewGeneration.cpp DefNewGeneration::copy_to_survivor_space
    share/vm/oops/oop.inline.hpp forward_to::forward_to
    markOop.hpp
    src/share/vm/oops/markOop.hpp
      // Prepare address of oop for placement into mark
      inline static markOop encode_pointer_as_mark(void* p) { return markOop(p)->set_marked(); }
    

    就是上面markOop(p) 这个写法当时没看懂,他不是什么方法调用,也不是什么构造函数,而是指针转换。
    青老师给我写了一小段demo如下:

    #include<iostream>
    using namespace std;
    
    struct A {
      int a;
      int b;
    };
    
    typedef A* APtr;
    
    int main(){
      A a;
      a.a=10;
      a.b=20;
      void *q = (void*)&a;
      APtr p = APtr(q); // 指针转换
      cout<<p->a<<","<<p->b<<endl;
    }
    
  • 相关阅读:
    JS基础算法题(一)
    JS数组的迭代器方法
    使用IcoMoon制作字体图标
    CSS浮动属性
    使用hibnate向数据库写入图片对象
    hibernate_基本配置和初始化步骤
    ORM框架
    Jsp中的session
    mysql的自我复制
    分页技术
  • 原文地址:https://www.cnblogs.com/simoncook/p/11809351.html
Copyright © 2011-2022 走看看