c - C 中的 malloc 字符串

标签 c char malloc heap-memory

我不太确定我是否了解 malloc 到底是如何工作的。

#include <stdio.h>
#include <stdlib.h>

int main() {

 char * string = (char*) malloc(sizeof(char));
 string = "abc";

 int * test = (int*) malloc(1 * sizeof(int));
 *(test) = 5;
 *(test + 1) = 6;


}

我预计这会输出一个错误,因为我指定给字符串的值大于一个字符,但它似乎编译得很好。

我有几个问题:

  1. “字符串”现在保存在哪里?它在堆上我分配的一个空间之后的内存空间上吗?

  2. 为什么 char 让我直接指定而 int 只能通过指针指定?

我真的不知道我在这里做什么

最佳答案

这段代码

string = "abc";

将字符串常量“abc”的地址分配给string变量,该变量是一个char *。从 malloc() 调用返回的内存地址(位于 string 中)被覆盖并丢失。

关于c - C 中的 malloc 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41804186/

相关文章:

c++ - 我如何告诉 GCC 为 -l 使用自定义库而不是系统库?

C 二维链表

区间树的C实现?

Oracle JDBC 和 Oracle CHAR 数据类型

c - 在分配的字符串上使用 strtok()?

关于 C 中 extern 值的澄清

字符没有被正确复制

c - c中正确的字符串终止符是什么

c - 在 C 中,如何访问此结构中的元素?

c - malloc,它如何分配地址?