像下面这样做是安全的吗?
#include <stdio.h>
#include <malloc.h>
#include <string.h>
int main(void)
{
char* msg;
strcpy(msg, "Hello World!!!"); //<---------
printf("%s\n", msg);
return 0;
}
还是应该使用以下方式?
char* msg = (char*)malloc(sizeof(char) * 15);
malloc
,但不需要进行类型转换和使用sizeof(char)
。正确的用法是char *msg = malloc(15);
。 - R.. GitHub STOP HELPING ICEmalloc()
的声明在<stdlib.h>
中而不是<malloc.h>
中。 - pmgmalloc()
的返回值:char *msg = malloc(15); if (msg == NULL) /* 无法继续 */;
- pmgNULL
是malloc告诉你出了什么问题的方式。 - pmgsizeof(char)
是可以的(就像 @R..'s 评论中所说的那样):这个问题 解释了根据 C99 标准,sizeof(char)==1
。 - apnorton