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]
来获取值。
我怎么了?
答案 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
。