相关疑难解决方法(0)

为什么这本书说我必须施放malloc?

今天我到了The C Programming Language(第二版Brian W. Kernighan和Dennis M. Ritchie)的167页,发现作者说我必须演员.这是本书的一部分:malloc

7.8.5存储管理

函数malloc和calloc动态获取内存块.

void *malloc(size_t n)
Run Code Online (Sandbox Code Playgroud)

返回指向未初始化存储的n个字节的指针,如果无法满足请求,则返回NULL.

void *calloc(size_t n, size_t size)
Run Code Online (Sandbox Code Playgroud)

为具有指定大小的n个对象的数组返回指向足够可用空间的指针,如果无法满足请求,则返回NULL.存储初始化为零.malloc或calloc返回的指针对于有问题的对象具有正确的对齐方式,但必须将其强制转换为适当的类型,如

int *ip;
ip = (int *) calloc(n, sizeof(int));
Run Code Online (Sandbox Code Playgroud)

我已经知道malloc(和它的族)返回类型void*,并且有很好的解释为什么不进行转换malloc.

但我的问题是:为什么这本书说我应该施展它?

c malloc casting kernighan-and-ritchie

152
推荐指数
1
解决办法
1万
查看次数

无法在C中释放const指针

我怎么能免费const char*?我分配了新内存使用malloc,当我试图释放它时,我总是收到错误"不兼容的指针类型"

导致这种情况的代码如下:

char* name="Arnold";
const char* str=(const char*)malloc(strlen(name)+1);

free(str); // error here
Run Code Online (Sandbox Code Playgroud)

c free const

65
推荐指数
3
解决办法
4万
查看次数

标签 统计

c ×2

casting ×1

const ×1

free ×1

kernighan-and-ritchie ×1

malloc ×1