C malloc 语法

标签 c malloc free freeze

str = (char *) malloc(15);

如果我不输入(char *) ,我的程序有什么不同吗?

如果我尝试使用 free(str) 释放内存,linux运行程序后意外死机。

最佳答案

如果你用 C 语言编程,这没有什么区别,首选语法实际上是

char *str = malloc(15);

如果您使用 C++ 进行编程,malloc() 的返回值不会隐式转换为 char * 以存储到 str 。但在 C++ 中,无论如何您都不应该使用 malloc(),您应该编写 str = new char[15]; 并使用 delete []str 释放此内存;.

free(str); 导致未定义行为的一个潜在原因是您对 str 指向的数组的写入超出了前 15 个字节。

使用 valgrind 帮助追踪发生这种情况的位置。

关于C malloc 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34241392/

相关文章:

c - 是否可以在不搜索 malloc 语句的情况下找到分配给指针的内存

c - 从单链表中删除节点——使用 MALLOC/FREE

c - C 中 Malloc() 的段错误

c - 为什么 free() 放置随机数据 block 而不是删除节点?

c++ - 检测到 glibc - 双重释放或损坏

c - 设置嵌入式系统的运行配置

c - MPI_Init() VS MPI_Init_thread()

c - 十六进制转义中的多个十六进制数字在语法中如何工作?

c - 将包含指针的结构写入磁盘

c - 在 C 中释放()malloc'ed 二维数组的最佳方法