当json_object_put将内存释放到系统?

时间:2017-10-25 11:37:53

标签: c linux json-c

我有这段代码:

#include <stdio.h>
#include <unistd.h>
#include <json/json.h>
#include <stdio.h>

json_object *new_array;

void add_result_event(json_object *scan_result) {
    json_object_array_add(new_array, scan_result);
}


void add_scan_result() {
    json_object *scan_result = json_object_new_object();
    json_object_object_add(scan_result, "ssid", json_object_new_string("ssssssssssssssssssssssssssssiiiiiiiiiiiidddddddddd"));
    add_result_event(scan_result);
}

void alloc_object() {
    int i = 0;
    while (i < 100000) {
        add_scan_result();
        i++;
    }
}

int main() {
    new_array = json_object_new_array();
    printf(" not started.. see memory\n");
    system("ps -aux | grep sonj");
    sleep (1);

    alloc_object();
    printf(" allocated.. see memory\n");
    system("ps -aux | grep sonj");
    sleep (1);

    json_object_put(new_array);

    printf(" freed.. see memory\n");
    system("ps -aux | grep sonj");
    sleep (1);

    new_array  =  json_object_new_array();
    printf(" allocated.. see memory\n");
    alloc_object();
    system("ps -aux | grep sonj");
    sleep (1);
}

编译:

~$ gcc json_array_obj_d.c -ljson-c -o sonj

然后,运行:

~$ ./sonj

输出的VSZ字段未显示json_object_put call之后释放到系统的任何内存。

因此使用json_object_put释放不会给系统带来内存,但是下一次分配也不会为系统带来更多内存。

在系统中显示空闲内存后调用json_object_put

0 个答案:

没有答案