相关疑难解决方法(0)

(字符串)文字的范围

我总是尽量避免返回字符串文字,因为我担心它们不是在函数之外定义的.但我不确定是不是这样.我们来看一下这个函数:


const char *
return_a_string(void)
{
    return "blah";
}
Run Code Online (Sandbox Code Playgroud)

这是正确的代码吗?它确实适用于我,但也许它只适用于我的编译器(gcc).所以问题是,do(string)文字有一个范围,或者它们是否一直存在/定义.

c string literals

29
推荐指数
3
解决办法
8114
查看次数

当在范围内创建指针时,当指针超出范围时,指向变量会发生什么?

标题说明了一切.

我发现了一个基本相同的旧问题,但我需要进一步澄清.

在这个问题中,接受的答案是:

char* text = "Hello, world"; 
Run Code Online (Sandbox Code Playgroud)

这里自动变量(指针)在堆栈上创建并设置为指向常量内存中的值,这意味着:

  • ""中的字符串文字存在于整个程序执行中.
  • 您不负责"分配"或"释放"它
  • 你可能不会改变它.如果你想改变它,那么你必须分配一些"非常量内存"并将其复制到那里.

这是说指针被删除了,而不是指针指向的数据?如果我要在函数中创建1,000,000个指向字符的指针,当它们超出范围时我的所有内存都会被释放?或者只是制作指针所需的内存,将实际角色本身留在后面以占用我所有的记忆?

c++ memory pointers scope

6
推荐指数
1
解决办法
8643
查看次数

标签 统计

c ×1

c++ ×1

literals ×1

memory ×1

pointers ×1

scope ×1

string ×1