我见过人们使用2种方法来声明和定义char *
.
Medhod 1:头文件如下
extern const char* COUNTRY_NAME_USA = "USA";
Run Code Online (Sandbox Code Playgroud)
Medhod 2:
头文件具有以下声明:
extern const char* COUNTRY_NAME_USA;
Run Code Online (Sandbox Code Playgroud)
cpp文件具有以下定义:
extern const char* COUNTRY_NAME_USA = "USA";
Run Code Online (Sandbox Code Playgroud)
const char * const var
"和" const char * var
" 之间的区别.如果在上面的方法中,如果const char * const var
在方法1中声明和定义标题中的" "是否有意义?我有一个关于共享库与静态库加载时间的问题.
假设我有一个使用liba,libb,libc的可执行文件foo.exe.此外,在给定时间,机器上运行的可执行文件的实例超过10个.
现在,如果上面的3个库是共享库:第1个Insance被加载到RAM中:所需的时间是foo.exe的main()加载内存所占用的时间(假设可以忽略不计)+加载liba的时间+加载时间libb +加载libc的时间启动第二个实例:现在假设运行此可执行文件的第二个实例.由于所有库都已加载到主存储器中,因此只需将main()加载到可忽略不计的内存中.
现在,如果上述3个图书馆是静态库:第一Insance被加载到RAM:加载利巴+时间来加载采取将通过主)foo.exe的采取(时间被加载存储器(假设其忽略不计)+时间的时间libb +加载libc的时间(Offcourse现在它是整个可执行文件的所有部分)第二个实例启动:现在假设运行这个可执行文件的第二个实例.所花费的时间将是再次)foo.exe的由主所花费的时间(被加载存储器(假设其忽略不计)+时间来加载利巴+时间来加载libb +时间来加载的libc.(因为每个可执行文件都不能共享图书馆,因为这些是静态图书馆)
所以我的结论是,使用静态库,加载时间会更长.但我被告知共享库在加载过程中比静态库花费更多时间,因此会有延迟,因此共享库不是一个好选择.这怎么可能 ?
假设基于静态库构建了可执行文件foo.exe,并且该foo.exe的6个实例同时在计算机上运行.由于除了RAM上的读写部分之外,所有代码都是相同的(只读部分),因此RAM中的这6个实例之间是否会共享以提高性能?
我知道如果上面的foo.exe使用共享库,即使有6个实例运行,这些共享库中只有1个实例将在RAM中.