我有以下代码:
char *DecompressChunk(Node *startNode, int arraySize)
{
char *cubeArray = new char[arraySize];
当我在那之后放一个断点时,arraySize 为 18,当我将鼠标悬停在数组上尝试查看它时,只显示第一个元素,没有其他内容,我可以打印它们,它工作正常,但我无法查看它们与 VS。您如何设置它以便您可以查看所有这些,或者可以吗?
我有以下代码:
char *DecompressChunk(Node *startNode, int arraySize)
{
char *cubeArray = new char[arraySize];
当我在那之后放一个断点时,arraySize 为 18,当我将鼠标悬停在数组上尝试查看它时,只显示第一个元素,没有其他内容,我可以打印它们,它工作正常,但我无法查看它们与 VS。您如何设置它以便您可以查看所有这些,或者可以吗?
您可以通过在监视窗口中添加逗号后跟大小来告诉调试器数组的大小(这称为格式说明符):
cubeArray,18
您不能使用变量或任何东西作为数组大小。
这里有一些其他的技巧。
如果您只想让工具提示向您展示更多信息,这将无济于事;它只能在监视窗口中使用。
尽管微软可能会在某些特殊情况下改进数组的工具提示,但由于 C++ 中数组的性质,总的来说这将非常困难;指向数组元素的指针无法知道该数组的边界。这对调试器的影响可能是最不重要的问题之一。这造成的其他问题会影响程序的安全性和正确性。
如果您避免使用原始数组而使用更智能的类型,那么调试器可以提供更好的工具提示。例如,调试器已经知道如何显示std::vector
。
您可以将变量用作动态数组的大小
例如
int* x = new int [size];
创建的数组必须通过以下方式手动释放:
delete[] x;
现在回到操作,我看不出为什么它们都不会显示的原因,除非它们还没有被创建,或者 VS 可能无法识别普通指针和数组指针之间的区别,它们被计算机看到作为同一件事