Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
malloc、参数、内存泄漏等错误很少 #包括 #包括 #定义循环100 #定义光线大小1024 int main(int argc,字符**argv) { 整数计数=0; char*pointer=NULL; 对于(count=0;count_C - Fatal编程技术网

malloc、参数、内存泄漏等错误很少 #包括 #包括 #定义循环100 #定义光线大小1024 int main(int argc,字符**argv) { 整数计数=0; char*pointer=NULL; 对于(count=0;count

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

您在前99次泄漏内存,因为您的空闲调用在循环之外。只有最后分配的内存被释放。

您对
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;
}