C代码,编译器Xcode,检测到的源缓冲区和目标缓冲区重叠

时间:2018-11-28 21:23:08

标签: c xcode

我正在为一个学校做一个项目,在这个项目中,我必须创建一个播放钓鱼的程序。其中一副纸牌在双链表中。我从功能Addcard中的文件中读取卡。我有一个打印卡片的功能,还有一个应该可以洗牌的功能。我已经使用结构的参数来实现卡。运行随机播放功能时,有时会看到错误“检测到的源缓冲区和目标缓冲区重叠”,有时不会。当错误出现时,在字符串复制函数旁边显示线程1:信号SIGABRT。我相信这与某种已分配内存的缓冲区大小太小有关,但是我真的不知道如何解决它。任何帮助将不胜感激。这是我编写的代码的摘录。

self._calendar = ttk.Treeview(self)
self._items = 
  [self._calendar.insert('', 'end', image=self.imgs[idx) for idx in range(3)]

1 个答案:

答案 0 :(得分:2)

在字符串复制功能附近,您会收到一条错误消息,提示“检测到的源缓冲区和目标缓冲区重叠”,该函数将数据从源复制到目标...

strcpy的实例中,源和目标可能指向同一内存吗?

我看到这两行:

card *temp1 = pt, *temp2 = pt;  //creates temperaries that start from the head left
//advance `temp1` `i` times, and `temp2` `j` times
... 
strcpy(temp1->suit, temp2->suit);

ij为相同值时会发生什么?