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/