小编sud*_*sud的帖子

是否适合在头文件中将值设置为"const char*"

我见过人们使用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)
  1. 方法1在某种程度上是错误的吗?
  2. 两者有什么区别 ?
  3. 我理解" const char * const var"和" const char * var" 之间的区别.如果在上面的方法中,如果const char * const var在方法1中声明和定义标题中的" "是否有意义?

c++ const-char effective-c++

15
推荐指数
3
解决办法
2万
查看次数

加载共享库与静态库的时间

我有一个关于共享库与静态库加载时间的问题.

假设我有一个使用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.(因为每个可执行文件都不能共享图书馆,因为这些是静态图书馆)

所以我的结论是,使用静态库,加载时间会更长.但我被告知共享库在加载过程中比静态库花费更多时间,因此会有延迟,因此共享库不是一个好选择.这怎么可能 ?

shared-libraries static-libraries

7
推荐指数
1
解决办法
3527
查看次数

可执行文件的多个实例(使用静态库构建)是否可以在RAM上共享任何内容

假设基于静态库构建了可执行文件foo.exe,并且该foo.exe的6个实例同时在计算机上运行.由于除了RAM上的读写部分之外,所有代码都是相同的(只读部分),因此RAM中的这6个实例之间是否会共享以提高性能?

我知道如果上面的foo.exe使用共享库,即使有6个实例运行,这些共享库中只有1个实例将在RAM中.

shared-libraries static-libraries

3
推荐指数
1
解决办法
1439
查看次数