积极答复者
问一个c++cli内部指针的奇怪的问题

问题
-
ref class A{ public: void Test() { //QueryPerfomanceCounter((LARGE_INTEGER*)&m_ticks); __int64 ticks = 0; QueryPerfomanceCounter((LARGE_INTEGER*)&ticks); }; private: __int64 m_ticks;};
上面的代码中,注释行会产生不能将interior_ptr<Type>转成LARGE_INTEGER*)的编译错误,而它下面的调用确能够正常执行。
为什么同样类型的数据成员和局部变量在内部指针转c++指针时会有不同的结果?
答案
-
class A被分配在托管堆上。所有的成员变量也是托管对象。但是ticks是个局部变量,局部变量并不是托管对象。否则你自己创建在普通栈上的对象无法表示。
麻烦把正确答案设为解答。- 已标记为答案 SunXiaojun 2010年4月16日 2:05
全部回复
-
class A被分配在托管堆上。所有的成员变量也是托管对象。但是ticks是个局部变量,局部变量并不是托管对象。否则你自己创建在普通栈上的对象无法表示。
麻烦把正确答案设为解答。- 已标记为答案 SunXiaojun 2010年4月16日 2:05