memcpy
メモリを使用して解放している間free
、ヒープが破損しています。理由がわかりません。
char *buff = malloc(20);
memset(buff,NULL,20);
strcpy(buff,"xvxvxvxxvx");
char*time = malloc(20));
memset(time,NULL,20);//memcpy use
memcpy(time,buff,20);
free(time);//crashing here
return 0;
sizeof(20)
のサイズですint
。malloc(20)
おそらく20文字を意図していたでしょう。
memset の 2 番目の引数は int を想定していますが、NULL を受け取っています。
void *memset(void *s, int c, size_t n);
memset() 関数は、s が指すメモリー域の最初の n バイトを定数バイト c で埋めます。
したがって、memset を memset(buff,0,20); として使用できます。これで、プログラムはクラッシュしなくなりました。