0

调试源:http ://www.cppblog.com/Files/mymsdn/cvector-bug-vs2008-201007101651.zip

大家好,我已经修复了我的代码,谢谢你的帮助!您可以下载我的代码的正确版本。

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

我正在尝试编写向量的 C 语言版本。我使用void ** apRoot 表示指针向量。我想保持 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]来获取值的函数。

我怎么了?

4

2 回答 2

1

问题出在您的“create_vector_n”函数中,有:

cvector_ptr_ptr = &cvector_ptr;
return cvector_ptr_ptr;

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

于 2010-07-10T09:49:51.593 回答
0

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

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

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

于 2010-07-10T09:44:10.137 回答