gpt4 book ai didi

c - 我什么时候应该在 C 中使用 malloc,什么时候不应该?

转载 作者:IT王子 更新时间:2023-10-28 23:28:18 28 4
gpt4 key购买 nike

我了解 malloc() 的工作原理。我的问题是,我会看到这样的事情:

#define A_MEGABYTE (1024 * 1024)

char *some_memory;
size_t size_to_allocate = A_MEGABYTE;
some_memory = (char *)malloc(size_to_allocate);
sprintf(some_memory, "Hello World");
printf("%s\n", some_memory);
free(some_memory);

为了简洁起见,我省略了错误检查。我的问题是,您不能通过初始化指向内存中某个静态存储的指针来完成上述操作吗?也许:

char *some_memory = "Hello World";

什么时候你真正需要自己分配内存而不是声明/初始化你需要保留的值?

最佳答案

char *some_memory = "Hello World";

正在创建一个指向字符串常量的指针。这意味着字符串“Hello World”将位于内存的只读部分中,而您只有一个指向它的指针。您可以将字符串用作只读。您不能对其进行更改。示例:

some_memory[0] = 'h';

自找麻烦。

另一方面

some_memory = (char *)malloc(size_to_allocate);

正在分配一个 char 数组(一个变量),而 some_memory 指向该分配的内存。现在这个数组既可读又可写。你现在可以这样做:

some_memory[0] = 'h';

数组内容变为“hello World”

关于c - 我什么时候应该在 C 中使用 malloc,什么时候不应该?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963780/

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