strcpy()函数正在进入无限循环

时间:2018-05-21 08:38:20

标签: c embedded dynamic-programming

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()函数的调用调用正在进入无限循环。

我无法理解确切的问题是什么。请帮帮我。

1 个答案:

答案 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}}