// (*(std::string*) pValue).assign(sVlaue);
*(std::string*) pValue = sVlaue;
1、
strcpy(d,s); 是将char* s的内容复制到char* d里面;
https://blog.csdn.net/u012889884/article/details/44627795
如果出现s长度大于d的长度就会出现溢出;显示不全;
方法1:
将char* d s转换成为string类型,因为string类型是空间是可以改变的。
方法2:
realoc();
-
如果有足够空间用于扩大mem_address指向的内存块,则分配额外内存,并返回mem_address。
这里说的是“扩大”,我们知道,realloc是从堆上分配内存的,当扩大一块内存空间时, realloc()试图直接从堆上现存的数据后面的那些字节中获得附加的字节,如果能够满足,自然天下太平。也就是说,如果原先的内存大小后面还有足够的空闲空间用来分配,加上原来的空间大小= newsize。那么就ok。得到的是一块连续的内存。
-
如果原先的内存大小后面没有足够的空闲空间用来分配,那么从堆中另外找一块newsize大小的内存。
并把原来大小内存空间中的内容复制到newsize中。返回新的mem_address指针。(数据被移动了)。
老块被放回堆上。
https://baike.baidu.com/item/realloc/659993?fr=aladdin
http://www.cplusplus.com/reference/cstdlib/realloc/
方法3:不建议
销毁,重新开辟空间:malloc();
方式assign
https://www.cnblogs.com/daochong/p/7204608.html