7.13 常见问题及解答
1.指针可以在初始化前使用吗?
解答:如果指针未初始化,则指针变量存储的是随意的数值。因此,直接使用可能将导致不可预知的后果。例如,有可能破坏其他存储单元的内容;也有可能破坏代码区的代码。
2.内存泄露是怎么产生的?
解答:当给指针分配空间后,如果不再使用必须释放。C++(www.cppentry.com)没有自动释放内存空间的能力,如果不释放将使得这些空间不能再被使用,处于游离状态,从而出现内存的泄漏。如果用malloc申请,这必须用free释放;如果用new分配,这需用delete来释放。
3.使用被释放的指针有何风险?
解答:当指针被释放,或生命期结束后(例如,在函数内给指针申请空间,从函数返回后,所指内存单元将被释放),继续使用它是危险的,因为所指向的内存单元已经被标记为释放,则系统可能将它再次分配给其他对象。但是,指针的值并没有被清空,这意味着仍然可以访问到该内存单元。所以,再次访问将破坏其他对象的内容。好的习惯是显式地将指针置空,使用前判空。
4.malloc/free和new/delete可以混用吗?
解答:两者完全不同,前者是函数,后者是运算符,不可以混用,必须配对使用。
5.可以用"int *p,q"形式来声明两个指针吗?
解答:由于*只作用到最近的变量。所以这将定义一个指针,一个整型变量,而不是两个指针。
6.整型常数可以直接赋给指针吗?
解答:虽然指针是无符号整型,但除0外,不能直接将任何整型常数赋给它。
【责任编辑:
云霞 TEL:(010)68476606】