#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;
}
答案 0 :(得分:1)
'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