c - malloc 是否生成字符串常量?

标签 c pointers malloc

首先,如果这是一个幼稚的问题,请原谅我;我只是一个尝试学习的初学者。

我知道:

  char* a = "CD"; 

将字符串存储在只读内存中;因此无法对字符串进行任何更改。 (常量)

但我确实知道在使用 malloc 时也是如此;

char* a = malloc(3*sizeof(char)) ;

a = "CD" ; 
a[0] = 'S' ; // even regular a = "MR"; does not work

我很困惑,我以为这是存储在中...

为什么我不能修改字符串?

最佳答案

a = "CD";char* a = "CD"; 做同样的事情:它存储 "CD"a。调用 malloc 返回的值被覆盖,分配的内存被泄漏。

正确的做法是复制字符串:

strcpy(a, "CD");

关于c - malloc 是否生成字符串常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54854799/

相关文章:

c - 在C中使用scanf提取key=value

c - 指向函数的结构体指针未初始化

c - 为什么强制转换在 C 中给出右值?

c - fread() 总是返回 1 的问题

c - 函数原型(prototype)中的函数声明(需要帮助)

c - 我如何计算输出

c - 需要左值作为递增操作数

c - 编写安全代码。真的每次都检查分配错误吗?

c++ - 为分配的内存设置 swappiness

c++ - 如何将本地 std::string 复制到 const char *?