我有类型的结构重复 我有称为stringsize的int类型的变量,其具有5 我创建一个动态数组的值:动态数组分配在C++问题
Duplicate *duplicates;
duplicates = new Duplicate[stringSize - 1];
后来我删除[]重复;
我只在该数组中获得一个成员?我已经通过调试验证了stringSize - 1 = 4。我能做些什么来获得我需要的4名成员?
赞赏任何帮助, 感谢// :)
我有类型的结构重复 我有称为stringsize的int类型的变量,其具有5 我创建一个动态数组的值:动态数组分配在C++问题
Duplicate *duplicates;
duplicates = new Duplicate[stringSize - 1];
后来我删除[]重复;
我只在该数组中获得一个成员?我已经通过调试验证了stringSize - 1 = 4。我能做些什么来获得我需要的4名成员?
赞赏任何帮助, 感谢// :)
Duplicate *duplicates;
duplicates = new Duplicate[stringSize - 1];
确实给你duplicates[0-3]
(假设stringSize - 1
4,像你说的)。你怎么确定你越来越少?
我怀疑你可能正在做的事情如:sizeof(duplicates)/sizeof(duplicates[0])
,并在一个变化得到一个。上述代码仅适用于静态分配的阵列,其中sizeof(duplicates)
将与阵列的大小(以字节为单位)匹配。在你的情况下,它只会返回系统上指针的大小。 (duplicates
是Duplicate*
)
并且必须:如果这是“真实”代码,则使用std::vector
。
您的调试器正在尽其所能。就它而言,你只是获得了一些数据的指针。试想一下:
Duplicate foo;
Duplicate *duplicates_A;
duplicates_A = &foo; // points to one Duplicate
Duplicate *duplicates_B;
duplicates_B = new Duplicate[4]; // points to memory containing 4 Duplicate's
bar(duplicates_A);
bar(duplicates_B);
void bar(Duplicate* p)
{
// is p a pointer to one value, or is it an array?
// we can't tell, and this is the same boat your debugger is in
}
应该如何调试,只是给一个指针,知道它是否指向数组或只是一个值?它不能,安全。 (它必须以某种方式确定指针是否指向阵列,以及该阵列的大小。)
您不能使用sizeof
来确定动态数组的大小。事实上,没有一个标准的API来确定动态数组的大小。如果您需要访问大小,请使用std::vector
。
如果您使用调试器来查看您获得的元素,问题可能是您的变量的类型是Duplicate*
这只是一个指针(在C中恰好也是一个数组,但类型只是一个指针Duplicate
的一个实例
为什么你认为你只能得到一个元素?你如何检查它? – sth 2010-01-31 07:21:12