str = NULL;
试题6的Test函数中也未对malloc的内存进行释放。剖析:
试题4~7考查面试者对内存操作的理解程度,基本功扎实的面试者一般都能正确的回答其中50~60的错误。但是要完全解答正确,却也绝非易事。
对内存操作的考查主要集中在:
(1)指针的理解;
(2)变量的生存期及作用范围;
(3)良好的动态内存申请和释放习惯。
再看看下面的一段程式有什么错误:
swap( int* p1,int* p2 )
{
int *p;
*p = *p1;
*p1 = *p2;
*p2 = *p;
}
在swap函数中,p是个“野”指针,有可能指向系统区,导致程式运行的崩溃。在VC 中DEBUG运行时提示错误“Access Violation”。该程式应该改为:
{
int *p;
*p = *p1;
*p1 = *p2;
*p2 = *p;
}
swap( int* p1,int* p2 )
{
int p;
p = *p1;
*p1 = *p2;
*p2 = p;
}
{
int p;
p = *p1;
*p1 = *p2;
*p2 = p;
}




