【发布时间】:2020-06-14 03:34:46
【问题描述】:
我写了这个函数,其目的是结合字符等价物 参数 3,与参数 2。然后为参数 1 分配内存并返回它。基于插入到函数中的调试语句,一切似乎都是正确的,但它似乎在返回时释放了内存。为什么是这样?还是我错过了什么?
我不习惯在 mac 上编程,我无法让 gdb 工作,所以我有点盲目。
功能
bool BraviaIpCtrl::setVolume(char *output, const char *input, unsigned short value)
{
bool success = false;
output = nullptr;
if(value <= 100)
{
int msgLen = 24;
output = new char[msgLen];
memset(output, 0, sizeof(*output));
std::string numbers = std::to_string(value).c_str();
size_t len = numbers.length();
memcpy(output, input, msgLen);
memcpy(output + (msgLen - 1) - len, numbers.c_str(), len);
success = true;
}
return success;
}
测试函数调用
char* test = nullptr;
if(bc.setVolume(test, bc.bctl_volume_set, 43) && test != nullptr)
{
std::cout << *test << std::endl;
}
else
{
std::cout << "NOPE!!" << std::endl;
}
【问题讨论】:
标签: c++ pointers memory-management