-3
scanf ("%d", &i);

这些代码是否相同//动态分配缓冲区(字符字符串)大小=i;

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

free(buffer);

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

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

4

2 回答 2

3

最佳做法是:

char *buffer = malloc(i + 1);

无需转换返回值,malloc并且sizeof(char)C 标准将其定义为 1。

于 2013-06-24T10:35:49.657 回答
0

sizeof(char)总是 1 这是标准的。所以而不是使用

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

sizeof(*buffer)你可以不用as来写这个:

char *buffer = malloc(i + 1);

于 2013-06-24T11:37:51.717 回答