C++里,字符串要占用内存的。C++创建字符串,并传给C#,就会造成内存泄露(因为C#不知道C++如何创建,也就不知道如何销毁)。
因此,通常的做法(甚至是C++互相调用的惯例),是
- 调用者(这里是C#)准备好一段内存缓冲区(这里是StringBuilder);
- 被调用者C++把字符串内容,填充到指定缓冲区去;
- 调用者从缓冲区能得到结果,也知道如何清理缓冲(C#自己会用垃圾回收),没有内存泄露问题。
C++里,字符串要占用内存的。C++创建字符串,并传给C#,就会造成内存泄露(因为C#不知道C++如何创建,也就不知道如何销毁)。
因此,通常的做法(甚至是C++互相调用的惯例),是