C++ 何时分配/释放字符串文字?

问题描述 投票:0回答:3

在此示例中,在程序的生命周期内,字符串文字“hello”何时被分配和释放?

init(char **s)
{
  *s = "hello";
}

int f()
{
  char *s = 0;
  init(&s);
  printf("%s\n", s);
  return 0;
}
c++ memory-management
3个回答
16
投票

字符串文字被编译器初始化到只读内存段中。运行时没有进行初始化或删除。


3
投票

它们没有被分配,而是存储在可执行文件的 DATA 段中。


1
投票

假设有一个操作系统,包含字符串文字的内存在操作系统加载可执行文件时被分配,并在操作系统卸载可执行文件时被释放。发生这种情况的具体时间取决于可执行文件的类型(程序、共享库等)和操作系统。

© www.soinside.com 2019 - 2024. All rights reserved.