malloc、参数、内存泄漏等错误很少 #包括 #包括 #定义循环100 #定义光线大小1024 int main(int argc,字符**argv) { 整数计数=0; char*pointer=NULL; 对于(count=0;count
您在前99次泄漏内存,因为您的空闲调用在循环之外。只有最后分配的内存被释放。您对malloc、参数、内存泄漏等错误很少 #包括 #包括 #定义循环100 #定义光线大小1024 int main(int argc,字符**argv) { 整数计数=0; char*pointer=NULL; 对于(count=0;count,c,C,您在前99次泄漏内存,因为您的空闲调用在循环之外。只有最后分配的内存被释放。您对malloc的调用应该与对free的调用一样多。在这里,您在循环中调用malloc,这意味着您对它的调用将比对free的调用多得多 每次通过循环分配一些内存,并将指针设置为指向它。当您这样做时,指针不再指向最后一块内存,但它仍然分配给您的程序。当您调用free(pointer)时,您只释放分配的最后一块内存 #include<stdio.h> #include<stdlib.h> #defi
malloc
的调用应该与对free
的调用一样多。在这里,您在循环中调用malloc
,这意味着您对它的调用将比对free
的调用多得多 每次通过循环分配一些内存,并将指针设置为指向它。当您这样做时,指针不再指向最后一块内存,但它仍然分配给您的程序。当您调用free(pointer)
时,您只释放分配的最后一块内存
#include<stdio.h>
#include<stdlib.h>
#define LOOPS 100
#define RAYSIZE 1024
int main (int argc, char **argv)
{
int count = 0;
char *pointer = NULL;
for(count=0; count<LOOPS; count++) {
pointer = (char *)malloc(sizeof(char) * RAYSIZE);
}
free(pointer);
return count;
}