gpt4 book ai didi

c++ - 将 shared_ptr 传递给 OpenGL?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:05 24 4
gpt4 key购买 nike

如果我的代码通常会像这样运行:

char* log = new char[logLength];
glGetProgramInfoLog(..., ..., log)
//Print Log
delete [] log;

如何使用 C++11 智能指针实现相同的结果?谁知道在我有机会删除那段内存之前会发生什么。

所以我想我需要向下转换为 C 风格的指针?

最佳答案

如果您的代码在您的代码片段中确实看起来像那样,shared_ptr 对这种情况有点矫枉过正,因为看起来您不需要分配内存的共享所有权。 unique_ptr对数组有部分专门化,非常适合此类用例。当托管指针超出范围时,它会调用 delete[]

{
std::unique_ptr<char[]> log( new char[logLength] );
glGetProgramInfoLog(..., ..., log.get());
//Print Log
} // allocated memory is released since log went out of scope

关于c++ - 将 shared_ptr 传递给 OpenGL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13794597/

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