我用Qcustomplot在Qt中绘制实时usb接收数据。为了更好的速度,我想在数据接收开始之前分配内存。这是我的代码的一部分:
ui->plot_platform->graph(0)->data().data()->clear();
QVector<QCPGraphData> add_data(x);
ui->plot_platform->graph(0)->addData(add_data);
我在数据接收开始时这样做。我怎么能确定x的大小?这意味着我如何找到我可以从Windows获得的最大内存大小?你的解决方案是否安全,不会崩溃?
答案 0 :(得分:1)
即使USB的吞吐量也有限,因此您可以估算最大数量
要点(每个时间单位):= x要在QVector<QCPGraphData> add_data(x)
中保留。
另一方面,当您在堆栈上为QVector<QCPGraphData>
分配内存时,如果您保留了太多的向量单元,则可能会出现堆栈溢出。
顺便说一下:你对速度的需求可能会让你在分配错误的地方进行优化
使用ui->plot_platform->graph(0)->addData(add_data);
更新绘图时,一些额外的内存不是那么耗时。值得与QWT(s。https://stackoverflow.com/a/24689918/4599792)比较?