老師我想請問,為什麼先使用free()釋放掉mem這個動態記憶體後面的程式就會跑不動了呢?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void MemoryControl() {
//memchr()
//memcmp()
//使用memset(void *dest,int value,int len):將dest後len個記憶體都初始化為value
//常配合動態記憶體配置時使用
char *mem = malloc(10);
memset(mem, 0, 10);
for (int i = 0; i < 10; i++) {
printf("%d ", *mem);
mem++;
}
puts("");
free(mem);
//memmove(void *dest,void *src,int len):將src中len個記憶體一定到dest的記憶體位置
char src[] = "HelloWorld";
char *dest = malloc(11);
memset(dest, 0, 11);
memcpy(dest, src, 11);
puts(dest);
memmove(dest + 3, dest + 1, 4);
puts(dest);
free(dest);
}
int main() {
MemoryControl();
return 0;
}```
我發現先不釋放mem又可以跑得動,請問是為什麼呢?
free()函數只能最後調用嗎?