私は構造体をシリアル化しようとしていますが、とプログラムがクラッシュした:私はこのコードを持つ2つの問題を参照してください「ダブルフリーまたは破損」が発生するのはなぜですか?
*** glibc detected *** ./unserialization: double free or corruption (fasttop): 0x0000000000cf8010 ***
#include <iostream>
#include <cstdlib>
#include <cstring>
struct Dummy
{
std::string name;
double height;
};
template<typename T>
class Serialization
{
public:
static unsigned char* toArray (T & t)
{
unsigned char *buffer = new unsigned char [ sizeof (T) ];
memcpy (buffer , &t , sizeof (T));
return buffer;
};
static T fromArray (unsigned char *buffer)
{
T t;
memcpy (&t , buffer , sizeof (T));
return t;
};
};
int main (int argc , char **argv)
{
Dummy human;
human.name = "Someone";
human.height = 11.333;
unsigned char *buffer = Serialization<Dummy>::toArray (human);
Dummy dummy = Serialization<Dummy>::fromArray (buffer);
std::cout << "Name:" << dummy.name << "\n" << "Height:" << dummy.height << std::endl;
delete buffer;
return 0;
}
'new T []'の代わりに 'std :: vector'を使用してください。 –
GManNickG