相关疑难解决方法(0)

C/C++:优化指向字符串常量的指针

看看这段代码:

#include <iostream>
using namespace std;

int main()
{
    const char* str0 = "Watchmen";
    const char* str1 = "Watchmen";
    char* str2 = "Watchmen";
    char* str3 = "Watchmen";

    cerr << static_cast<void*>( const_cast<char*>( str0 ) ) << endl;
    cerr << static_cast<void*>( const_cast<char*>( str1 ) ) << endl;
    cerr << static_cast<void*>( str2 ) << endl;
    cerr << static_cast<void*>( str3 ) << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这会产生如下输出:

0x443000
0x443000
0x443000
0x443000
Run Code Online (Sandbox Code Playgroud)

这是在Cygwin下运行的g ++编译器.即使没有打开优化(),指针也指向相同的位置.-O0

编译器是否总是进行优化以至于它会搜索所有字符串常量以查看它们是否相等?可以依赖这种行为吗?

c c++ string optimization constants

14
推荐指数
5
解决办法
4229
查看次数

标签 统计

c ×1

c++ ×1

constants ×1

optimization ×1

string ×1