Я пытаюсь вызвать функцию Go из кода C, но я столкнулся с проблемой, которую не могу объяснить:
C:
char * ret;
CheckDpkgInfo(&ret);
printf("%s", ret);
Go:
func CheckDpkgInfo(dpkg_c **C.char) {
*dpkg_c = C.CString("whatever")
}
Это работает, но не тогда, когда я просто возвращаю строку переменного тока из Go (segfault):
C:
char * ret = CheckDpkgInfo();
printf("%s", ret);
Go:
func CheckDpkgInfo() *C.char {
return C.CString("whatever")
}
Если я правильно понял документацию, CString должен вызывать malloc, поэтому я действительно не понимаю, почему printf segfaults. Спасибо!