scanf ("%d", &i);
这些代码是相同的//动态分配缓冲区(字符串char)size = i;
char *buffer = malloc (sizeof((*buffer)*(i+1)));
free(buffer);
char * buffer;
buffer = (char*) malloc (i+1);
free(buffer);
如果是,哪个更安全(更好)?
答案 0 :(得分:3)
最佳做法是:
char *buffer = malloc(i + 1);
无需转换malloc
的返回值,sizeof(char)
被C标准定义为1。
答案 1 :(得分:0)
sizeof(char)
始终是1的标准。所以而不是使用
char *buffer = malloc (sizeof((*buffer)*(i+1)));
您可以在不sizeof(*buffer)
的情况下将其写为:
char *buffer = malloc(i + 1);