c语言如何分配内存给常量字符串
How does c allocate memory to constant string?
我想改变malloc, memcpy和free函数,并使用这个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
, alloc
和realloc
。
相关文章:
- 多个"常量引用"变量可以共享同一个内存吗?
- 犰狳C++ - 从常量内存初始化只读矩阵而不复制
- C++ 在类中使用常量引用文本时 O2 内存泄漏
- c++ 编译器是否保护常量内存地址免受任何更改?
- 常量引用的内存位置
- 常量类实例的C++内存地址
- 使用函数中的语句数作为内存分配的常量
- 使用常量可以节省内存吗?
- 如何将常量字符* []隐藏到单个内存块,例如char* ptr
- 使用新的位置来创建静态常量指针,指向静态内存缓冲区
- 作为类的静态属性的常量内存符号
- 堆上是否会分配内存以支持临时对象到常量引用的嵌套绑定
- 如何在C++中打印已定义常量的内存地址
- c++中用于常量数据的内存存储
- 强制 NVCC 不考虑常量内存的构造函数
- 其中C++内存中的文字常量存储
- 如何避免内存泄漏与返回常量字符*
- 为什么右值/常量引用有内存地址和大小
- C编译器是否有义务在内存中放置一个静态常量
- 带有标准容器和常量引用的c++代码显示出意外的内存