关于char*
全局 char* 变量
SWIG 使用malloc() 或者 new 来给新值分配内存。比如如下形式的一个变量:
char *foo ;
SWIG 生成如下代码:
/* C mode */
void foo_set(char *value) {
if (foo) free(foo);
foo = (char *) malloc(strlen(value)+1);
strcpy(foo,value);
}
/* C++ mode. When -c++ option is used */
void foo_set(char *value) {
if (foo) delete [] foo;
foo = new char[strlen(value)+1];
strcpy(foo,value);
}
如果这不是你希望的行为,比如这是个只读变量,可以用 %immutable 标识。或者你可以写个自己的辅助赋值函数,比如:
%inline %{
void set_foo(char *value) {
strncpy(foo,value, 50);
}
%}
注意: