fixed huffman tree memory leak
This commit is contained in:
parent
b8efcd14ec
commit
5cb50f7922
|
@ -1 +1 @@
|
||||||
Subproject commit 0ca5b15a8eac40327dd737be52c926fa5675712c
|
Subproject commit ceda5bf9fcd7836509ac97dcc0056b3f1dd48cc5
|
|
@ -18,6 +18,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
#if defined(WINDOWS)
|
#if defined(WINDOWS)
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
printf("welcome to use taospack tools v1.3 for windows.\n");
|
printf("welcome to use taospack tools v1.3 for windows.\n");
|
||||||
|
@ -601,7 +602,6 @@ void test_threadsafe_double(int thread_count){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void unitTestFloat() {
|
void unitTestFloat() {
|
||||||
|
|
||||||
float ft1 [] = {1.11, 2.22, 3.333};
|
float ft1 [] = {1.11, 2.22, 3.333};
|
||||||
|
@ -662,7 +662,50 @@ void unitTestFloat() {
|
||||||
free(ft2);
|
free(ft2);
|
||||||
free(buff);
|
free(buff);
|
||||||
free(output);
|
free(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
void leakFloat() {
|
||||||
|
|
||||||
|
int cnt = sizeof(g_ft1)/sizeof(float);
|
||||||
|
float* floats = g_ft1;
|
||||||
|
int algorithm = 2;
|
||||||
|
|
||||||
|
// compress
|
||||||
|
const char* input = (const char*)floats;
|
||||||
|
int input_len = cnt * sizeof(float);
|
||||||
|
int output_len = input_len + 1024;
|
||||||
|
char* output = (char*) malloc(output_len);
|
||||||
|
char* buff = (char*) malloc(input_len);
|
||||||
|
int buff_len = input_len;
|
||||||
|
|
||||||
|
int ret_len = 0;
|
||||||
|
ret_len = tsCompressFloatLossy(input, input_len, cnt, output, output_len, algorithm, buff, buff_len);
|
||||||
|
|
||||||
|
if(ret_len == 0) {
|
||||||
|
printf(" compress float error.\n");
|
||||||
|
free(buff);
|
||||||
|
free(output);
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
float* ft2 = (float*)malloc(input_len);
|
||||||
|
ret_len = tsDecompressFloatLossy(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len);
|
||||||
|
if(ret_len == 0) {
|
||||||
|
printf(" decompress float error.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
free(ft2);
|
||||||
|
free(buff);
|
||||||
|
free(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void leakTest(){
|
||||||
|
for(int i=0; i< 90000000000000; i++){
|
||||||
|
if(i%10000==0)
|
||||||
|
printf(" ---------- %d ---------------- \n", i);
|
||||||
|
leakFloat();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define DB_CNT 500
|
#define DB_CNT 500
|
||||||
|
@ -689,7 +732,7 @@ extern char Compressor [];
|
||||||
// ----------------- main ----------------------
|
// ----------------- main ----------------------
|
||||||
//
|
//
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
printf("welcome to use taospack tools v1.3\n");
|
printf("welcome to use taospack tools v1.5\n");
|
||||||
|
|
||||||
//printf(" sizeof(int)=%d\n", (int)sizeof(int));
|
//printf(" sizeof(int)=%d\n", (int)sizeof(int));
|
||||||
//printf(" sizeof(long)=%d\n", (int)sizeof(long));
|
//printf(" sizeof(long)=%d\n", (int)sizeof(long));
|
||||||
|
@ -753,6 +796,9 @@ int main(int argc, char *argv[]) {
|
||||||
if(strcmp(argv[1], "-mem") == 0) {
|
if(strcmp(argv[1], "-mem") == 0) {
|
||||||
memTest();
|
memTest();
|
||||||
}
|
}
|
||||||
|
else if(strcmp(argv[1], "-leak") == 0) {
|
||||||
|
leakTest();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
unitTestFloat();
|
unitTestFloat();
|
||||||
|
|
Loading…
Reference in New Issue