gpt4 book ai didi

c - malloc 是否使用数据或文本段或其他类型的内存?

转载 作者:太空宇宙 更新时间:2023-11-04 06:46:54 24 4
gpt4 key购买 nike

char *p1 = "hello";
char *p2 = (char *)malloc(10 * sizeof(char));
char *p3 = "bye";

strcpy(p2, p1);
printf("p2:%s, %p\n", p2, p2);

strcpy(p2, p3);
printf("p2:%s, %p\n", p2, p2);

最佳答案

您用 C 标记了问题,但没有提及任何操作系统或 CPU。

data segment 和text segment 的概念与C 无关,它们与一些操作系统相关,并做了这种区分。

当然,因为text段在使用它的系统上是存放代码和只读数据的,而且malloc返回的内存是可以修改的,所以不可能是text段。

数据段可以引用初始化数据,malloc当然是分配新的数据,所以不可能是数据段这个意思。

如果您对数据段的定义是任何数据,那么返回的内存就是其中的一部分。有一些(不常见/旧的)架构具有独立的代码和数据地址空间。

C 标准只 promise malloc 内存是可修改和正确对齐的。

关于c - malloc 是否使用数据或文本段或其他类型的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56824061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com