【发布时间】:2013-06-18 00:04:21
【问题描述】:
我有以下代码,它采用未排序的歌曲和艺术家列表,并对它们进行排序和显示。
int main()
{
SongList totalList; // has a public 2d array 'unsortedSongs' variable
char songs[100][80] =
{
{"David Bowie 'Ziggy Stardust'",},
{"Smokey Robinson 'You've Really Got A Hold On Me'",},
{"Carole King 'You've Got A Friend'",},
// many more songs here totaling to 100
{"Joni Mitchel 'A Case Of You'",},
{"Prince 'Kiss'"}
};
memcpy(&totalList.unsortedSongs, &songs, sizeof(songs)); // this causes a segmentation fault
totalList.displaySortedList();
return 0;
}
我几乎直接从示例 here 中获取了 memcpy 的代码,所以我很困惑为什么这不起作用。有人可以帮我解决这个问题吗?
编辑:
这是 SongList 的初始化
class SongList
{
public:
char unsortedSongs[100][80];
public:
void displaySortedList();
void sortList();
string rearrange(char[]);
string getSongsForArtist(int*);
};
【问题讨论】:
-
你能告诉我们
SongList是如何声明和实现的吗?我猜unsortedSongs没有正确初始化。 -
您确定需要
&songs而不仅仅是songs? (unsortedSongs可能也一样,但我们不知道... -
我真的不认为
memcpy:http://ideone.com/lJKboC的行中存在分段错误。 -
虽然在回到这个问题后我所说的在技术上是不正确的,但我看不出它是如何解决根本问题的。您的大小不匹配,在复制和粘贴时已更正,或者问题确实出在
displaySortedList中。似乎我无法删除我的答案,因为它已被接受,所以您可以添加displaySortedList的代码。
标签: c++ multidimensional-array segmentation-fault 2d memcpy