wjx0912
2023-07-17 16:17:24 +08:00
猜测的原因:__attribute__((constructor))时,c++ runtime 还未初始化,std::string 的一些操作可能不稳定。
测试:
```
std::string g_test1;
std::string g_test2;
__attribute__((constructor))
static void init() {
g_test1 = "hello test1";
printf("init: %s\n", g_test1.c_str());
}
void hello_func1(void) {
g_test2 = "hello test2";
printf("Hello World: %s, %s\n", g_test1.c_str(), g_test2.c_str());
return;
}
void hello_func2(void) {
printf("Hello World: %s, %s\n", g_test1.c_str(), g_test2.c_str());
return;
}
```
在 hello_func2 里面,g_test1 无法打印,g_test2 正常。
不知道这个思路是否正确,求大神指点