首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSharedPointer::create()

QSharedPointer::create()
EN

Stack Overflow用户
提问于 2014-01-08 03:52:09
回答 1查看 4.4K关注 0票数 1

在Qt 4中,我有以下数组:

代码语言:javascript
复制
QSharedPointer<unsigned char> encrypted(new unsigned char[RSA_size(publickey)]);

如何将这两个分配合并到一个新的Qt5Create函数中?

代码语言:javascript
复制
QSharedPointer<T> QSharedPointer::create()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-08 03:59:02

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

改为:

代码语言:javascript
复制
QSharedPointer<unsigned char> encrypted(new unsigned char[RSA_size(publickey)], [](unsigned char* x){ delete[] x; });

也就是说:您必须为指针提供一个自定义删除器。

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

代码语言:javascript
复制
auto x = QSharedPointer<unsigned char>::create();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20986694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档