c++ - 在函数之间来回传递 char*

标签 c++ c

我有两个函数,我试图将一个缓冲区从一个函数传递到另一个函数并让它修改内容,但我似乎无法让它工作。这就是我所拥有的:

void caller ()
{
    char *  datum;
    populate (&datum);
}

void populate (void * buf)
{
    unsigned char * datump;
    int dtsz;
    getData (datump,dtsz);   // This function puts "001" in datump and dtsz = 4 

    buf = new unsigned char[dtsz];
    memset(datumbuf,0,sizeof(buf));
    memcpy (buf,datump,dtsz);

}

当我调试时,一切似乎都完全一样,直到我到达 memcpy。看起来 memcpy 实际上没有做任何事情。 "datumbuf = new unsigned char[dtsz]"完成的原因是因为 "getData()"函数每次返回不同的大小,具体取决于数据大小,因此不能静态分配大小。

当我回到主要的“caller()”函数时,“数据”包含垃圾。

知道为什么会发生这种情况以及如何解决它吗?

谢谢

最佳答案

它不是 C++,它是 C。如果您使用的是 C++,请使用 std::string 并忘记此类缓冲区。

您不要在populate 中修改buf。你没有为 datump 分配内存(不知道 getData 做了什么)。

关于c++ - 在函数之间来回传递 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20575931/

相关文章:

无法将参数1从 'char [20][20]'转换为 'char ** '?

.net - 使用 webrequest 时如何保持连接?

c - 如何知道用户是 root 还是 fakeroot?

c - Glade 中的 GUI — 适用于 Linux 和 Windows 的应用程序

c++ - extern "C"声明如何工作?

c++ - 关于 std::array fill 的设计决策

c++ - `sizeof(some_vector[0])` 有效吗?

c++ - 从 Windows 事件中唤醒 QThread

c++ - 一个数的2个因数组成一组有多少种方法? (C/C++)

c - 为什么运行时上下文在为 10g 编译的程序中不能在 11g 上工作?