有人能帮我找到我的内存泄漏吗?我使用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;
}
他说他用valgrind。 – Barmar 2012-08-12 04:47:37
你的代码的其余部分在哪里? – TOC 2012-08-12 04:49:01
该功能可以肯定使用一些简化。第一个while循环可以用'length = strlen(charint)'代替。在第二个while循环中,为什么要复制到图表中?为什么不只是'bi-> data = atoi(charint)'? – Barmar 2012-08-12 04:58:35