指针,字符串和溢出错误

时间:2012-03-19 08:48:07

标签: c++ string overflow

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

结构是

struct info {
    string all;
    string word;
}

我所做的是,尝试将字符串'all'赋值;

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

有关可能导致此问题的任何线索?

3 个答案:

答案 0 :(得分:2)

v未初始化。

成功

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

除非已分配内存位置,否则无法使用内存位置。 info *v只创建一个指向内存位置的指针,目前它指向垃圾。你必须使用new为它分配内存。在new之后,您可以使用str为其指定值。

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