cuốn sách gpt4 ai đã làm

c++ - __restrict 和 shared_ptr 黑客

In lại Tác giả: Taklimakan 更新时间:2023-11-03 06:57:22 28 4
mua khóa gpt4 Nike

以下安全吗?

struct K { ... }

cấu trúc A
{
A(int psize) : size(psize), foo(nullptr), bar(nullptr)
{
auto dataptr = (K*)_aligned_malloc(sizeof(K) * psize * 2, 32);
data = shared_ptr(dataptr, ptr_fun(_aligned_free));
foo = data.get();
bar = data.get() + psize;
}
K* __restrict foo;
K* __restrict bar;
private:
shared_ptr data;
};

注意 foo 和 bar 上的 __restrict。

目标是在所有对象别名都消失时让分配的内存自毁。

{
A a(1000);
{
A o = a;
}
//a.foo is still valid
}
//a.foo is invalid

câu trả lời hay nhất

这里不需要 __restrict 限定符,事实上你不应该使用它们,因为 __restrict 应该告诉编译器你没有同一内存的任何别名,但实际上您确实有别名——foodata 是同一内存的别名。

我认为你的代码语义没问题,否则。您的a.foo 仍然有效a.foo 无效条件将为真。

关于c++ - __restrict 和 shared_ptr 黑客,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7870411/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress