全局的std::string

如果放一个全局的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嵌套。

 

你可能感兴趣的:(全局的std::string)