我在使用C++中的有效指针时遇到问题.我在不同的线程中使用一个对象,所以我不能只将指针设置为NULL并返回.这是我正在尝试的:
int main()
{
char *ptr = new char[1024]; //assume PTR = 0x12345678
changePtr(ptr); //after calling this,
//ptr is not NULL here.
return 0;
}
void changePtr(char *ptr)
{
delete [] ptr; //ptr = 0x12345678
ptr = NULL; //ptr = NULL
}
Run Code Online (Sandbox Code Playgroud)
如何ptr为两个函数更改为NULL?
将changePtr的签名更改为:
void changePtr(char **ptr)
{
delete [] *ptr; //ptr = 0x12345678
*ptr = NULL; //ptr = NULL
}
Run Code Online (Sandbox Code Playgroud)
并使用以下方式调用:
changePtr(&ptr);
Run Code Online (Sandbox Code Playgroud)
在C++中,使用引用参数:
void changePtr(char *&ptr) {
delete [] ptr; //ptr = 0x12345678
ptr = NULL; //ptr = NULL
}
Run Code Online (Sandbox Code Playgroud)
在C中,您需要将指针传递给指针,这基本上与不太漂亮的语法相同.
您无需更改调用代码.但是你必须在调用时给出一个可修改的变量作为参数,不能给出例如NULL或者nullptr你不能做的&NULL.
| 归档时间: |
|
| 查看次数: |
1646 次 |
| 最近记录: |