malloc,参数,内存泄漏等几个错误

时间:2011-04-11 05:58:21

标签: c

#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;
}

3 个答案:

答案 0 :(得分:1)

你正在泄漏内存前99次,因为你的免费通话不在循环中。仅释放最后分配的内存。

答案 1 :(得分:1)

每次循环都会分配一些内存并设置pointer指向它。当你这样做时pointer不再指向最后一块内存,但它仍然分配给你的程序。当你拨打free(pointer)时,你只能释放你分配的最后一块内存。

答案 2 :(得分:0)

mallocfree的通话次数应尽可能多。在这里,您可以在循环中调用malloc,这意味着您将比free更多地调用它。