我是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
有关可能导致此问题的任何线索?
答案 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
为其指定值。
或者您也可以使用静态内存分配