我必须在 C 中编写一个 DLL,其中包含一个返回特定字符串的函数(作为指向表示字符串的 char 缓冲区的指针)。DLL 中的函数将被重复调用,并在不同的线程中执行。
正确的做法是在函数中分配 char 缓冲区,并在使用返回缓冲区后在调用者环境中释放分配的缓冲区。
// DLL function
char *getString() {
char *buffer = (char *)malloc(STRING_LEN);
// fill buffer with some string
return buffer;
}
不幸的是,将在我的 dll 中调用该函数的编程环境没有释放返回缓冲区的机制,因此导致内存泄漏。
如何在这种情况下返回字符串而不产生内存泄漏?