gpt4 book ai didi

c++ - C++问题中的动态数组分配

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:55 25 4
gpt4 key购买 nike

我有一个 Duplicate 类型的结构我有一个名为 stringSize 的 int 类型变量,它的值为 5我正在创建一个动态数组:

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
}

调试器,只要给定一个指针,应该如何知道它是指向一个数组还是只指向一个值?它不能,安全地。 (它必须以某种方式确定指针是否指向数组,以及该数组的大小。)

关于c++ - C++问题中的动态数组分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2170886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com