使用reinterpret_cast进行转换会导致:OverflowError:有符号整数小于最小值

时间:2013-06-20 17:42:59

标签: c++ casting reinterpret-cast

im cast

char* something= reinterpret_cast<char*>(&GPBuffer);

而不是回到:

char temp1 [400];

string buffer = reinterpret_cast<string&>(temp1);

我知道将字符串转换为char *看起来很愚蠢但这就是我需要的东西而且它有效!!

但如果我将“某事”(抛出内部阙)传递给另一个线程,并且我尝试强制转回,我会收到:

  

0x00000000009bb2dd in std :: basic_string,std :: allocator&gt; :: operator =(this = 0x48410790,__str = Traceback(最近一次调用最后一次):     在to_string中输入文件“/usr/share/gdb/python/libstdcxx/v6/printers.py”,第469行       return self.val ['_ M_dataplus'] ['_ M_p']。string(encoding,length = len)   OverflowError:有符号整数小于最小值   )/usr/lib/gcc/x86_64-redhat-linux/4.1.2 /../../../../ include / c ++ / 4.1.2 / bits / basic_string.h:486

是否有人熟悉此错误?

2 个答案:

答案 0 :(得分:1)

你接受一个普通的char数组,把它转换为字符串,并期望它能够工作?你比我想象的更勇敢。

无论如何,你得到的错误来自调试器的Python脚本,它试图以可读的形式打印std :: string。因为你拥有的只是一个有效的std :: string,所以有些检查脚本会触发并抛出错误。这不是正常的C ++错误。

答案 1 :(得分:0)

我会使用void*

void* something = (void*)(&PGBuffer);

string my_fancy_string((char*)something)

除此之外,我不会使用std :: string来保存原始数据的缓冲区,只使用char数组,但这是你的选择。