动态分配缓冲区(字符串char)size = i;使用malloc

时间:2013-06-24 10:22:36

标签: c++ c

scanf ("%d", &i);

这些代码是相同的//动态分配缓冲区(字符串char)size = i;

char *buffer = malloc (sizeof((*buffer)*(i+1)));

free(buffer);

char * buffer;
buffer = (char*) malloc (i+1);
free(buffer);

如果是,哪个更安全(更好)?

2 个答案:

答案 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);