gpt4 book ai didi

c++ - 如何在QIoDevice中摆脱memcpy

转载 作者:行者123 更新时间:2023-12-02 23:51:01 25 4
gpt4 key购买 nike

我正在使用Qt进行一些音频输出。有一个示例音频输出,其中纯虚函数qint64 QIODevice::readData(char * data,qint64 maxSize)像这样重新实现(这不是示例中的实际代码)。

qint64 Generator::readData(char *data, qint64 len)
{
memcpy(data, m_buffer.data(), len);
return len;
}

因此,我们获得了指向数据的指针,将内存从缓冲区复制到该数据。我想知道是否可以将指针数据分配给新位置,如下所示:
qint64 Generator::readData(char *data, qint64 len)
{
data = m_buffer.data();
return len;
}

因为memcpy慢且C。我可以吗?谢谢!

好的,只是不接收评论“什么很慢”:
首先-memcpy比指针分配慢
第二-是的,我在声音播放方面有延迟,我想使程序在每个点上都达到最佳。

附言我正在尝试这样做,但我没有声音,所以也许答案是否定的。那么为什么?

最佳答案

此方法的签名仅允许您通过复制来返回数据。
分配指针是没有意义的,因为此参数将作为副本传递,因此分配的值在您的方法外部将不可见。

对于实时音频输出,memcpy一点也不慢(除非您在8位处理器上执行此操作)。

音频代码太慢会导致声音出现间隙,但不会引起延迟。延迟是音频缓冲区太大的结果。

关于c++ - 如何在QIoDevice中摆脱memcpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24440098/

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