我的c基础不是很好,还请知道的能详解一下,谢谢
如果我直接使用类似如下的代码,就会出segfault错误
char* ret = "hello world";
RETURN_STRINGL(ret, strlen(ret), 0);
无论ret是直接写字符串,还是先初始化成char[100]这样,都不行
但是只要将程序稍加改进使用动态分配内存就没事:
char* hello = "hello world";
int len = strlen(hello);
char* ret = (char*)emalloc(len);
memcpy(ret, hello, len);
RETURN_STRINGL(ret, len, 0);
补充一句:后来发现RETURN_STRINGL的第三个参数改成1也不会有越界访问错误了