Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在使用memcpy和释放内存时,free会出现堆损坏。我不明白为什么。
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 个字符。
sizeof(20)
int
malloc(20)
memset 的第二个参数需要 int 但正在接收 NULL。
void *memset(void *s, int c, size_t n);
memset() 函数用常量字节 c 填充 s 指向的内存区域的前 n 个字节。
所以你可以使用 memset 作为 memset(buff,0,20); 现在程序不会崩溃。