我的代码是什么原因?一个未处理的例外

时间:2010-07-10 09:03:37

标签: c++ pointers unhandled-exception

debug src:http://www.cppblog.com/Files/mymsdn/cvector-bug-vs2008-201007101651.zip

  

嘿所有,我修复了我的代码,谢谢你的帮助!您可以下载我的代码的正确版本。

src:http://www.cppblog.com/Files/mymsdn/cvector-vs2008-20100710.rar

我正在尝试编写一个C语言版本的vector。我使用void ** a pRoot指示指针向量。我想保留void ** p,而不是我的malloc记忆。

像这样:cvector_ptr_ptr = &cvector_ptr;

我将cvector_ptr_ptr传递给每个函数来处理它。

在我的代码中,我遇到了一个未处理的异常。我想我读过了。但是在函数"insert"中,我可以使用(*cvector_ptr_ptr)->element_size来获取大小值。我将cvector_ptr_ptr传递给函数"insert_copy"我无法使用相同的代码[(*cvector_ptr_ptr)->element_size]来获取值。

我怎么了?

2 个答案:

答案 0 :(得分:1)

问题出在你的“create_vector_n”函数中,那里:

cvector_ptr_ptr = &cvector_ptr;
return cvector_ptr_ptr;

你正在返回一个指向堆栈变量(cvector_ptr)的指针,这是非常错误的。

答案 1 :(得分:0)

我认为你的代码有很多问题,一个非常明显的问题是

offset = ((*cvector_ptr_ptr)->count + 1) * element_size;
                                    ^^^
                            this is the problem

您添加的第一个元素应写入偏移零,而不是element_size