gpt4 book ai didi

c++ - QSharedPointer::创建()

转载 作者:行者123 更新时间:2023-11-30 01:55:07 28 4
gpt4 key购买 nike

在 Qt 4 中我有以下数组:

QSharedPointer<unsigned char> encrypted(new unsigned char[RSA_size(publickey)]);

如何使用新的 Qt 5 create 函数将两个分配合并为一个?

QSharedPointer<T> QSharedPointer::create()

最佳答案

你的第一个例子是错误的,不仅会泄漏内存,还会导致UB。当您定义 QSharedPointer<unsigned char>您正在为单个元素定义一个智能指针,而不是元素数组,因此 delete将被调用,而不是 delete[] .

将其更改为:

QSharedPointer<unsigned char> encrypted(new unsigned char[RSA_size(publickey)], [](unsigned char* x){ delete[] x; });

即:您必须为指针提供自定义删除器。

最后,QSharedPointer::create函数应该只用于一个元素,而不是一组元素,它可以用于:

auto x = QSharedPointer<unsigned char>::create();

关于c++ - QSharedPointer::创建(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20986694/

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