我无法解决这个问题。当我编译时,编译器因为free func而给我一个错误

时间:2011-01-10 09:56:18

标签: c

#include <stdio.h>
#include <stdlib.h>


void copyint(char *i,char** temp);
int main()
{
    char* a="00313";
    char* temp;
    int inte;
    temp=(char*)malloc(sizeof(char));

    copyint(a,&temp);

    inte=atoi(temp);
    printf("%s\n",temp);
    system("PAUSE");
    free(temp);
}

void copyint(char *i,char** temp)
{
    *temp=i;
}

4 个答案:

答案 0 :(得分:1)

毫无疑问,第一眼就出现了什么问题: - copyint将单个char复制到指向的内存中。 所以做了什么:临时值是'0',随机,随机......

'0',随机随机由atoi解析 - undefined,因为我们不知道该指针下面的内容。 然后打印出来......

使用strlen malloc strcpy序列代替

编辑:它不会编译,因为你将(char *)传递给接受(char)的函数。 (copyint(a,&temp);

答案 1 :(得分:1)

您的代码被窃听。

temp = malloc(sizeof(char));

将一个字节分配给temp。

copyint(a, &temp);

传递“temp”的地址。然后“temp”被覆盖,因此它不再指向分配的内存。因此无法释放。

其次,copyint的第一个参数是char,但您传递的是char *。最后,你到底在做什么atoi()

我认为你需要找出copyint()实际上做了什么。无论如何你还想做什么? 的

答案 2 :(得分:0)

您正在为1个字符分配内存,但在copy int函数中将4个字节复制到该指针。

答案 3 :(得分:-1)

即使问题不是那么清楚,我相信包括 malloc.h 会解决这个问题,至少在你使用VC编译器的时候。 HTH