y***n 发帖数: 1594 | 1 在C++ 里边,一般都要把new 的 Object 删除掉。 有的链表问题需要加一个helper的
Node ,但是function返回的时候也要用到这个helper的Node ,大家一般什么时候把这
个Node 删除掉,还是和面试的人说一下就行了。 |
c*******y 发帖数: 1630 | 2 in this case, caller is responsible for that.
【在 y***n 的大作中提到】 : 在C++ 里边,一般都要把new 的 Object 删除掉。 有的链表问题需要加一个helper的 : Node ,但是function返回的时候也要用到这个helper的Node ,大家一般什么时候把这 : 个Node 删除掉,还是和面试的人说一下就行了。
|
w**s 发帖数: 339 | 3 想办法在return之前把它delete掉,这个可能是C++麻烦的地方吧,不过一般都能做到
。另外你可以用smart pointer。 |
r*********n 发帖数: 4553 | 4 既然这个Node要返回,一般都是返回Node*,就不能删除这个Node,要不然返回的Node*
就是非法的。
【在 y***n 的大作中提到】 : 在C++ 里边,一般都要把new 的 Object 删除掉。 有的链表问题需要加一个helper的 : Node ,但是function返回的时候也要用到这个helper的Node ,大家一般什么时候把这 : 个Node 删除掉,还是和面试的人说一下就行了。
|
a******e 发帖数: 124 | 5 可以在main函数里delete掉,或者建一个新的function专门delete dynamically
located pointer吧.
如下例
http://www.codeproject.com/Articles/21909/Introduction-to-dynam
template
T **AllocateDynamicArray( int nRows, int nCols)
{
T **dynamicArray;
dynamicArray = new T*[nRows];
for( int i = 0 ; i < nRows ; i++ )
dynamicArray[i] = new T [nCols];
return dynamicArray;
}
template
void FreeDynamicArray(T** dArray)
{
delete [] *dArray;
delete [] dArray;
}
int main()
{
int **my2dArr = AllocateDynamicArray(4,4);
my2dArr[0][0]=5;
my2dArr[2][2]=8;
cout << my2dArr[0][0] << my2dArr[0][1] << endl;
cout << my2dArr[1][1] << my2dArr[2][2]<< endl;
FreeDynamicArray(my2dArr);
return 0;
} |
l***i 发帖数: 1309 | 6 You can use a Node object that is local to your function, instead of new a
Node from heap.
void f(Node *head)
{
Node dummy; // assume Node has a default constructor
// do something
// on return, dummy will get destructed
} |