请问函数内部的临时指针和句柄是不是在函数结束前都要写代码释放?也就是函数在调用完成后是否会自动释放内部的临时变量?比如这个句柄
HANDLE hFile = CreateFile(_T("C:\\MyFile.DAT"),
GENERIC_WRITE, FILE_SHARE_READ,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
当我完成文件的读写后是否需要添加代码释放?还是函数自动完成?
又比如使用链表时,增加删除节点时,往往会在函数内部使用一两个临时变量指针
Node *p, *q;
p=LinkHead;
q=p->next;
while(q->id!=num)
{
p=p->next;
q=q->next;
}//添加或删除操作
...这时函数内部的临时变量p,q应该手动添加代码释放吗?还是自动由函数完成?如果释放,那释放的是这个指针?还是指针指向的内存呢?希望高手给予指点,谢谢!
HANDLE hFile = CreateFile(_T("C:\\MyFile.DAT"),
GENERIC_WRITE, FILE_SHARE_READ,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
当我完成文件的读写后是否需要添加代码释放?还是函数自动完成?
又比如使用链表时,增加删除节点时,往往会在函数内部使用一两个临时变量指针
Node *p, *q;
p=LinkHead;
q=p->next;
while(q->id!=num)
{
p=p->next;
q=q->next;
}//添加或删除操作
...这时函数内部的临时变量p,q应该手动添加代码释放吗?还是自动由函数完成?如果释放,那释放的是这个指针?还是指针指向的内存呢?希望高手给予指点,谢谢!
1 需要 CloseHandle(hFile) 2 如果要删除 p 和 q指向的节点,要free或delete。
CNode *p = new Node;然后将p插入到链表中,那我在InsertNode()函数调用完后需要delete p吗?
如果delete p,会不会把添加的节点删除了?
CNode * p ,如果把数据放在一些全局变量里面了,比如一个全局链表,
那么,就要; p=NULL;delete p;否则delete p;
如果是 char * p=new char[];
如果数据有其他引用,不能删除,那么就 p=NULL;delete p;
否则 delete [] p;
就是对于单个字符的指针,char *p = new char;
delete p释放p同时释放了p指向的内存!内存被清空。
但是对于结构体指针Node *p = new Node;
调用delete p;只会释放p,但内存不会清空!
呵呵,好奇怪呀!delete p以后还可以使用该内存Node中的信息!