【发布时间】:2021-10-02 21:32:35
【问题描述】:
我试图了解 Win32 API 如何处理指针所有权。
我现在正在查看的具体示例是指向我传递给 API 并从 API 获取的字符串的指针的所有权。
以SetWindowText 函数为例。它需要一个LPCSTR,一个指向空终止宽字符串的指针。
另一个例子是RegisterClass 函数和WNDCLASS 结构。
RegisterClass 函数采用指向 WNDCLASS 结构的指针,WNDCLASS 结构再次包含指向类名的 LPCSTR。
API 是否拥有该内存的所有权,还是我需要处理释放它?
在我看来,它不太可能获得所有权,但我对 C/C++ 约定的了解还不足以肯定地说,而且我找不到任何有关 API 所有权约定的文档。
【问题讨论】:
-
Windows“Win32”API 不太关心 C 或 C++ 约定或其他编程语言的约定。这真的是一件好事,如果你看一下 Linux,两者纠缠在一起导致不幸的依赖关系。
malloc是 C;HeapAlloc是 Windows。
标签: c++ c windows pointers winapi