今天调试发现一个有趣现象
代码1:
#include <iostream>
void func(char* data)
{
memcpy(data,"12345",5);
}
int main()
{
char* data = new char[5];
func(data);
std::cout << "Hello World!\n";
}
代码2:
#include <iostream>
void func(char* data)
{
data = new char[5];
memcpy(data,"12345",5);
}
int main()
{
char* data = nullptr;
func(data);
std::cout << "Hello World!\n";
}
我想通过一函数将char* data引用传递。代码1可以正常运行,代码2就不行了,可见char*在函数内部创建会被释放掉。因此大家一定要注意这个问题。