2012-03-19 76 views
5

我是新来的C + +和编程,我正在写一个小程序作为一个任务的一部分,并得到它的工作,但我想让代码运行得更快,所以我试图让我的向量存储一个指向结构的指针。指针,字符串和溢出错误

的结构是

struct info { 
    string all; 
    string word; 
} 

而我所做的是,试图指定字符串“所有”的值;

info* v; 
v->all = str; 

和STR被定义为

string str = "Hello"; 

,我在运行GDB是得到了错误;

File "/usr/share/gdb/python/libstdcxx/v6/printers.py", line 469, in to_string 
return self.val['_M_dataplus']['_M_p'].string (encoding, length = len) 
OverflowError: signed integer is greater than maximum 

任何线索可能是什么原因造成的?

回答

2

v未初始化。

让它

info* v = new info; 
v->all = str; 

但你真的应该表现出更多的代码。目前尚不清楚,您正在尝试做什么以及如何存储指针会使代码运行得更快。

+0

记住约'删除v',当它不再需要。 – 2012-03-19 08:53:15

+0

谢谢你的回应。在制作一个指向信息的指针时,我特意加了一个'*'并忘记了'新'... – michcs 2012-03-19 09:08:03

1

info* v;只是定义了指向一些随机的内存位置指针,使用它,你需要分配内存info,使这个指针指向这块内存。你可以使用new这样做:info* v = new info();。请注意,您需要通过执行delete v;来释放内存。

0

你不能使用内存位置,除非它被分配。 info *v只创建一个指向内存位置的指针,并且目前指向垃圾。您必须使用new为其分配内存。在new之后使用str为其分配值。

,或者您也可以使用静态内存分配