指针,字符串和溢出错误
问题描述:
我是新来的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
任何线索可能是什么原因造成的?
答
v
未初始化。
让它
info* v = new info;
v->all = str;
但你真的应该表现出更多的代码。目前尚不清楚,您正在尝试做什么以及如何存储指针会使代码运行得更快。
答
info* v;
只是定义了指向一些随机的内存位置指针,使用它,你需要分配内存info
,使这个指针指向这块内存。你可以使用new
这样做:info* v = new info();
。请注意,您需要通过执行delete v;
来释放内存。
答
你不能使用内存位置,除非它被分配。 info *v
只创建一个指向内存位置的指针,并且目前指向垃圾。您必须使用new
为其分配内存。在new
之后使用str
为其分配值。
,或者您也可以使用静态内存分配
记住约'删除v',当它不再需要。 – 2012-03-19 08:53:15
谢谢你的回应。在制作一个指向信息的指针时,我特意加了一个'*'并忘记了'新'... – michcs 2012-03-19 09:08:03