Как указать, становиться ли владельцем упорядоченной строки или нет?

предположим, что у меня есть x.dll на C ++, который выглядит так

MYDLLEXPORT
const char* f1()
{
   return "Hello";
}

MYDLLEXPORT
const char* f2()
{
   char* p = new char[20];
   strcpy(p, "Hello");
   return p;   
}

Теперь предположим, что я хочу использовать это в C #

[DllImport("x.dll")]
public static extern string f1();

[DllImport("x.dll")]
public static extern string f2();

Есть ли способ сказать CLR, чтобы он стал владельцем строки, возвращаемой из f2, а не f1? Дело в том, что тот факт, что строка, возвращенная из f1, в конечном итоге будет освобождена, удалена или что-то еще с помощью GC, одинаково плохо с тем фактом, что строка, возвращенная из f2, не будет. Надеюсь, вопрос был ясен. Заранее спасибо

7
задан pmg 8 March 2011 в 21:08
поделиться