在xcode c项目中,代码:
#include <stdio.h>
int main()
{
int* pi = (int*) malloc(sizeof(int));
*pi = 5;
printf("*pi: %d\n", *pi);
free(pi);
return 0;
}
打印't'而不是5,虽然我明确地包含了%说明符,但根据规范应该打印带符号的十进制整数。我希望'%c'说明符会打印出来。到底是怎么回事?
答案 0 :(得分:2)
C动态内存分配函数在 stdlib.h 标题中定义。
如果您添加标准库&#39;对于您的代码,它应该运行没有任何错误。
此外,malloc()在无法分配请求的空间时返回空指针。因此,您应该通过使用简单的if-else块确保您收到的内容不是NULL。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int* pi = (int*) malloc(sizeof(int));
if(pi==NULL){
printf("Malloc Failed!");
return -1;
}
else{
*pi = 5;
printf("*pi: %d\n", *pi);
free(pi);
return 0;
}
}
上面的代码块给出了预期的结果* pi:5。
希望这有帮助,
参考: https://en.wikipedia.org/wiki/C_dynamic_memory_allocation