这段代码出现这种警告警告是什么意思
编译环境:Visual Studio 2008
代码:
请问这个是什么原因?
//练习代码
#include <stdio.h>
#include <string.h>
#include <malloc.h>
void main(void)
{
int i;
unsigned char a1[] = "hello";
unsigned char *pa2 = NULL;
unsigned char *p = NULL;
pa2 = (unsigned char*)malloc(sizeof(a1) * sizeof(unsigned char)); //注意看这里,如果使用strlen(a1),则会少分配一个字节
if(pa2 == NULL)
{
printf("Out Of Memory!");
}
else
{
strcpy((char*)pa2,(const char*)a1);
p = pa2;
for(i=0; i<sizeof(a1)-1; i++)
{
printf("%c",*p++);
}
printf("\n");
free(pa2);
pa2 = NULL;
}
}