gpt4 book ai didi

c++ - 在 Qt 的槽函数中修改参数是否安全?

转载 作者:搜寻专家 更新时间:2023-10-31 00:14:36 24 4
gpt4 key购买 nike

我有一个发出 std::vector<uint8_t> 的信号其中包含大量数据(缓冲区)。

然后在接收对象中我有一个带参数的插槽 std::vector<uint8_t> data

然后我尝试解码这些数据。我必须做的一件事是删除填充,例如:

void receive_slot(std::vector<uint8_t> data)
{
// Remove padding
if (data.size() > 20)
data.resize(data.size() - 20);
}

现在,我认为传入的这个参数是一个拷贝,我可以“随心所欲”。但是,重新调整大小大于 ~10 个字节会使我的程序崩溃。我假设调整大小小于 ~10 个字节不会仅靠运气使它崩溃。

因此,我假设我不能安全地执行此操作,应该先将其复制到新的数据缓冲区。

谁能告诉我这件事吗?

最佳答案

提供问题的直接答案:

Qt 中的槽只是普通的函数调用(调用它们的时间和参数是不同的,由 Qt 管理),并且修改函数参数是完全有效的(当显然是非 const 时)。当你说你得到了一份拷贝并且你可以“用它做你想做的事”时,你是对的。

在这种情况下,错误不仅仅来自于您正在修改函数参数这一事实。

关于c++ - 在 Qt 的槽函数中修改参数是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22509634/

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