3

次のコードがあります。

char *DecompressChunk(Node *startNode, int arraySize)
{
    char *cubeArray = new char[arraySize];

その後、arraySize を 18 にしてブレークポイントを配置すると、配列にカーソルを合わせて表示しようとすると、最初の要素のみが表示され、他には何も表示されず、それらを印刷でき、正常に動作しますが、すべてを表示することはできませんVSで。それらすべてを表示できるようにするには、どのように設定しますか?

4

2 に答える 2

8

デバッガーに配列の大きさを伝えるには、ウォッチ ウィンドウでカンマの後にサイズを追加します (これを書式指定子と呼びます)。

cubeArray,18

配列サイズとして変数などを使用することはできません。

ここにいくつかの他のトリックがあります。


これは、ツール ヒントで詳細を表示したいだけの場合には役に立ちません。ウォッチ ウィンドウでのみ使用できます。

Microsoft はおそらくいくつかの特殊なケースで配列のツール ヒントを改善することができますが、一般的には C++ の配列の性質のために非常に困難です。配列の要素へのポインターは、その配列の境界を知る方法がありません。これがデバッガーに与える影響は、おそらく最も重要でない問題の 1 つです。これにより生じるその他の問題は、プログラムのセキュリティと正確性に影響を与えます。

よりスマートな型を優先して生の配列を避けると、デバッガーはより良いツールヒントを提供できます。デバッガーstd::vectorは、たとえば を表示する方法を既に認識しています。

于 2012-10-31T19:12:52.387 に答える
0

動的配列のサイズとして変数を使用できます

例えば

int* x = new int [size];

作成された配列は、次の方法で手動で割り当てを解除する必要があります。

delete[] x;

操作に戻りますが、まだ作成されていない場合、または VS が通常のポインターと配列ポインターの違いを認識できない場合を除き、それらのすべてが表示されない理由がわかりません。それらはコンピューターによって認識されます。同じものとして

于 2012-10-31T19:44:13.527 に答える