我的代码的原因是什么?未处理的异常

发布于 2024-09-09 01:57:28 字数 940 浏览 1 评论 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 ** 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] 来获取值。

我怎么了?

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

Hey all, I have repair my code, thanks yours help! You can download the correct version of my code.

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

I am trying to write a C language version of vector. I use the void ** a the pRoot indicate the pointer vector. I want to keep the void ** p available, than I malloc a memory.

like this :cvector_ptr_ptr = &cvector_ptr;

I pass the cvector_ptr_ptr to each function to deal with it.

In my code, I encounter a unhandled exception. I think I have read overrun. But in the function "insert", I can use (*cvector_ptr_ptr)->element_size to get the size value. I pass the cvector_ptr_ptr to the function "insert_copy" I can't use the same code [(*cvector_ptr_ptr)->element_size] to get the value.

What's wrong with me?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

迷雾森÷林ヴ 2024-09-16 01:57:28

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

cvector_ptr_ptr = &cvector_ptr;
return cvector_ptr_ptr;

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

The problem is in your "create_vector_n" function, there:

cvector_ptr_ptr = &cvector_ptr;
return cvector_ptr_ptr;

You are returning a pointer to a stack variable (cvector_ptr), which is terribly wrong.

灯角 2024-09-16 01:57:28

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

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

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

I think your code has many problems, one problem that is really evident is

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

The first element you add should be written to offset zero, not element_size.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文