包含的非管理源文件被清除,即使其他调用函数忘了去解析。 指针和句柄 在C++扩展名管理中,C++的主要限制没有变化,同样的符号和语法用做完全的事情,*的含义依赖于你的代码中的其他位置的信息,你可以试试下面的代码: Foo* pf = new Foo(); Foo对象将在哪里建立?那块内存是否被清除?我能象下面那样对指针做算法吗: pf++; 答案依赖于Foo是否用__gc关键字声明,假如它是碎片收集对象,它只能在管理堆不是在本堆和堆栈中建立,另一方面,如果没有用__gc声明,将在本堆中分配内存给它,你必须记得去清除它。 如果编译器有自由去改变语言,就象在C++/CLI上发生的,可以忽视什么地方生存的什么类型的类,可以用不同的语法表明它在哪里生存: Foo^ hf = gcnew Foo(); 这被叫做句柄,许多C++团队好象都是用^符号来标明的,你可以用*和->来解除句柄的引用,你可以从实例的声明而不是回过头从类的声明中得到生命期的声明。例如: ref class R { private: int m_a; public:<页码:[1] [2] [3] [4] [5] [6] [7] 第5页、共7页 |