c语言如何分配内存给常量字符串

How does c allocate memory to constant string?

本文关键字:内存 常量 字符串 分配 语言 何分配      更新时间:2023-10-16

我想改变mallocmemcpyfree函数,并使用这个libhooker与LD_PRELOAD。
我更改它们,并对它们进行一些测试用例测试。但在其中一个,我的代码不能正常工作,不知道为什么。
测试用例:

int main()
{
    string s = "Hello";
    return 0;
}
我的代码输出:
malloc[0x8229170-0x8229182]
[memcpy] source address 0x8048850 is not allocated.
free(0x8229170)

我不知道c如何为常量字符串分配内存,为什么我的代码是错误的。

字符串常量通常在程序的DATA部分分配。这通常被标记为只读,并且位置偏移量在编译时定义。

这个内存通常不是由malloc分配的。

我不知道你想用memcpy做什么,但是你不能假设你想用memcpy的所有东西都是用malloc分配的。例如,在堆栈上分配的所有内容。数据部分的所有内容。使用自定义分配器(它可能位于堆栈上)分配的所有内容。此外,您还需要了解calloc, allocrealloc