[C++]char*数据在函数外和内部创建对象的问题

阅读 9

2024-11-03


今天调试发现一个有趣现象

代码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*在函数内部创建会被释放掉。因此大家一定要注意这个问题。

精彩评论(0)

0 0 举报