memcpyは私のプログラムで奇妙な振る舞いをしています。私の関数は2回呼び出されるので、memcpy行は2回実行されます。最初は問題なく動作し、2回目はその行でセグメンテーション違反が発生します(gdbを使用)。なぜ1回は機能するのに、2回は機能しないのかわからないため、混乱しています...また、入力した2つの名前は同じ長さです。
これは私が持っているものです...
typedef struct _item_
{
char name[500];
}item;
int my_function(char *name)
{
item *myitem = malloc(sizeof(item));
char* temp = myitem->name;
strcpy(temp, name);
/* code here to write add item to a global structure */
return 0;
}
コードのテストで...
int i;
i = my_function("test1");
.
.
.
i = my_function("test2");
次に、strcpyに変更しましたが、同じ問題が発生します
strcpy(temp, name);
なぜこれが機能しないのかについてのアイデアはありますか?