我正在为一个学校做一个项目,在这个项目中,我必须创建一个播放钓鱼的程序。其中一副纸牌在双链表中。我从功能Addcard中的文件中读取卡。我有一个打印卡片的功能,还有一个应该可以洗牌的功能。我已经使用结构的参数来实现卡。运行随机播放功能时,有时会看到错误“检测到的源缓冲区和目标缓冲区重叠”,有时不会。当错误出现时,在字符串复制函数旁边显示线程1:信号SIGABRT。我相信这与某种已分配内存的缓冲区大小太小有关,但是我真的不知道如何解决它。任何帮助将不胜感激。这是我编写的代码的摘录。
self._calendar = ttk.Treeview(self)
self._items =
[self._calendar.insert('', 'end', image=self.imgs[idx) for idx in range(3)]
答案 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);
当i
和j
为相同值时会发生什么?