有人可以帮我找到内存泄漏吗?我使用valgrind检查泄漏,我无法找到它报告的那些。谢谢!
bigint* bi_create(const char* charint)
{
int length = 0;
const char* temp;
int flag = 0;
temp = charint;
while(*charint != '\0')
{
length++;
charint++;
}
char chartoint[length];
charint = temp;
//printf("LENGTH = %d \n", length);
bigint* bi = malloc(sizeof(bigint));
bi->length = length;
int counter = 0;
bi->initialzero = 0;
while(*charint != '\0')
{
if(*charint == '0' && flag != 1)
{
(bi->initialzero)++;
}else
{
flag = 1;
}
chartoint[counter] = *charint;
// printf("CHARTOINT = %c \n", chartoint[counter]);
charint++;
counter++;
}
bi->data = atoi(chartoint);
printf("DATA = %d \n", bi->data);
// printf("INITIAL ZERO = %d \n", bi->initialzero);
return bi;
}
答案 0 :(得分:3)
此功能没有内存泄漏。但是,如果调用者没有释放由此函数分配的内存,则它将被泄露。
答案 1 :(得分:2)
在你的函数中有一个malloc :
bigint* bi = malloc(sizeof(bigint));
调用此功能时:
bigint my_big_int = bi_create(my_string);
离开之前不要忘记free
:
free(my_big_int);
就是这样!