hai我遇到了strcpy()函数的问题。这与嵌入式c编程有关。
以下是我项目中使用的代码的一部分。基本思想是将字符串(名称)复制到其内存动态分配的数组_Items
char *_Items[100];
unsigned char contactname[36];
Memset(name,0,36);
Memset(_Items, 0, sizeof(_Items));
for(count=0; count<10 ; count++)
{
_Items[count] = (char*)malloc((strlen((char*)name)+1)*sizeof(char));
strcpy(_Items[count], (char*)name);
}
....
...function body
....
free(_Items);
在第一次调用函数时,代码工作正常,但在第二次函数strcpy()函数的调用调用正在进入无限循环。
我无法理解确切的问题是什么。请帮帮我。
答案 0 :(得分:1)
你在这里char *_Items[100];
做了什么吗?:
free(_Items);
没有。那你为什么打电话给malloc
?
你在这里for(count=0; count<10 ; count++)
{
_Items[count] = (char*)malloc((strlen((char*)name)+1)*sizeof(char));
做了什么吗?:
free
是的。那么为什么不为循环中的每个项目调用free(_Items)
?
调用malloc
告诉系统释放一些未使用// allocate
for(count=0; count<10 ; count++)
{
_Items[count] = malloc((strlen((char*)name)+1));
strcpy(_Items[count], (char*)name);
}
....
...function body
....
for(count=0; count<10 ; count++)
{
free(_Items[count]);
}
分配的内存,这是_undefined行为,并且中断其余的执行,可以任何地方(这就是它的“乐趣”)。
重写你的免费程序:
{{1}}