如果放一个全局的string:
std::string g_my_string_obj = "aaaaa";
会发生什么?
一些STL的实现,为了减少malloc的次数,预先留空间,
所以没有调用内存分配函数。
也有一些会调用malloc。
何时调用? 在main函数之前。
如果自己定义了allocator,
std::basic_string< CHAR_TYPE, TRAITS, User_Allocator >
那么User_Allocator必须保证先初始化:
一般是在首次调用User_Allocator::alloc()的时候。
不然,行为不确定:
预留空间的STL实现,可能一切正常,
但换一套STL恐怕就有问题。
或者加长字符串,也会有问题。
出现什么样的问题? 一般是在main之前崩溃(这也是最好的)。
怎么定位?
自己写一个入口函数user_startup,调用运行库定义的入口函数MainCRTStartup。
加一个seh嵌套。