在这个问题,有人建议意见,我应该不会投的结果malloc,即
int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)
而不是:
int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
我理解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);
Run Code Online (Sandbox Code Playgroud)
为简洁起见,我省略了错误检查.我的问题是,你不能通过初始化指向内存中某些静态存储的指针来做到这一点吗?也许:
char *some_memory = "Hello World";
Run Code Online (Sandbox Code Playgroud)
在什么时候你真的需要自己分配内存而不是声明/初始化你需要保留的值?