当调用memset时,我对内存中实际发生的事情感到困惑,而当你调用free时会发生什么.
例如,我有一个指向一个char*数组的指针A.
char** A = (char**)calloc(5, sizeof(char*));
int i;
for(i=0;i<5;i++)
{
//filling
A[i] = (char*)calloc(30, sizeof(char));
scanf("%s", &A[i]);
}
Run Code Online (Sandbox Code Playgroud)
现在我想重置它我的char**指针和它指向的所有元素都是完全空的
memset(A, 0, 5);
Run Code Online (Sandbox Code Playgroud)
要么
free(A);
Run Code Online (Sandbox Code Playgroud)
有什么不同?
我对C有点新意,所以请以外行的话说话,谢谢
不同之处在于memset实际设置内存块的值,同时free返回内存以供操作系统使用.
通过类比使用物理东西,memset(beer, 0, 6)应用于六包啤酒会将"0"的值应用于阵列的所有六个成员beer,而free(beer)相当于将六包装给朋友.
| 归档时间: |
|
| 查看次数: |
10162 次 |
| 最近记录: |