gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:03 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com