全局的std::string

    技术2022-05-20  97

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

     


    最新回复(0)