Tas*_*ret 2 c++ malloc visual-studio-2010 new-operator
首先:我知道这new是C++的做法.我只是表明有不止一种方法可以重现这个错误,而且两者都非常令人沮丧.
我有两种形式的源文件.我正在尝试调试另一个编程任务,但我不是在寻求帮助.基本上,我正在尝试重新实现set一个类,其中包含大小字段和指向int数组的指针.这是使用的代码new:
testnew.cpp
int main()
{
int size = 1;
int *elements = new int[size];
elements[0] = 0;
size++;
int * temp = new int[size];
for (int i = 0; i < (size - 1); i++)
{
temp[i] = elements[i];
}
delete[] elements;
temp[size] = size;
elements = temp;
elements[1] = 1;
delete[] elements;
}
Run Code Online (Sandbox Code Playgroud)
再次,使用不太优选的alloc功能:
testalloc.cpp
int main()
{
int size = 1;
int * elements = (int *) malloc(sizeof(int) * size);
elements[0] = 0;
size++;
elements =(int *) realloc(elements,size * sizeof(int));
elements[1] = 1;
free(elements);
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我的目标是创建一个数组,然后附加到它.但是,在这两种情况下,在Visual Studio 2010中构建和运行它之后,阵列根本不会增长,并且只有1个"槽"供我的项目进入.在VS的调试器中,我监视elements数组指针; 附件是截图.两个版本的代码都是一样的.
- 断点位于delete[]/ free()call.
说真的,我做错了什么?这必须是一个逻辑错误,我已经通过两者的后腰打法的例子梳理malloc/ realloc和new,以及阅读和重新阅读我的书,我看不出有什么不对!
我觉得我应该有一条线将分配的内存分成一个数组,但是new int[]调用不是这样做的吗?
除了代码的任何其他问题,您必须要么做Joe Gauterin提到并拥有多个手表,或者设置这样的手表:
elements,5
Run Code Online (Sandbox Code Playgroud)
将导致:

我不知道是否有VS2010的更新列表,但这仍然有效:
Watch Variables的符号
和:
Visual Studio调试器中的View数组?
| 归档时间: |
|
| 查看次数: |
2325 次 |
| 最近记录: |