【发布时间】:2010-12-30 03:28:06
【问题描述】:
我了解 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";
什么时候你真正需要自己分配内存而不是声明/初始化你需要保留的值?
【问题讨论】:
-
回复:为了简洁起见,我省略了错误检查 - 不幸的是,太多的程序员省略了错误检查,因为他们没有意识到
malloc()可以失败!
标签: c memory memory-management