【发布时间】:2021-10-03 04:50:40
【问题描述】:
当我使用 qsort() 对包含类对象的数组进行排序时,出现此错误“munmap_chunk(): invalid pointer Aborted”。 这是我的代码:
#include <iostream>
#include <string>
#include <cstdlib>
class MyString : public string
{
public:
MyString(const char *str) :string(str) {}
MyString(const string & str) :string(str) {}
};
int CompareString(const void * e1, const void * e2)
{
MyString * s1 = (MyString *) e1;
MyString * s2 = (MyString *) e2;
if ( *s1 < *s2 ) return -1;
else if ( *s1 == *s2 ) return 0;
else if ( *s1 > *s2 ) return 1;
}
int main()
{
MyString SArray[4] = {"big","me","about","take"};
qsort(SArray,4,sizeof(MyString), CompareString);
for( int i = 0;i < 4;++i )
cout << SArray[i] << endl;
return 0;
}
当我注释掉 qsort() 行时。错误消失。我想知道为什么会发生这种情况以及如何解决该错误。
我的输出:
我
我
二
采取
munmap_chunk(): 无效指针
中止
【问题讨论】:
-
试试
(const MyString *)。