C++ 为指针分配整数

C++ 为指针分配整数,c++,C++,我有个问题 struct bin { int *vector; bin *next; }; bin *v = new bin; 在一个函数中,我有: v->vector = new int[3]; // etc. 这个想法是:如果我把v->vector[20]=3;它正在工作,我不知道为什么,因为我预计会有一个错误。我想我不太明白什么是v->vector=newint[1];正在做。我以为它为向量分配了3个整数:v->vector[1],v->vector[2],

我有个问题

struct bin
{
    int *vector;
    bin *next;
};

bin *v = new bin;
在一个函数中,我有:

 v->vector = new int[3];
 // etc.

这个想法是:如果我把v->vector[20]=3;它正在工作,我不知道为什么,因为我预计会有一个错误。我想我不太明白什么是v->vector=newint[1];正在做。我以为它为向量分配了3个整数:v->vector[1],v->vector[2],v->vector[3]。有人能解释一下为什么v->vector[20]=3;不会给我一个错误吧?谢谢,它坏了。它给出了未定义的行为——你已经写入了你不应该写入的内存。 C++没有数组边界检查,如果需要,你必须自己做,也许是通过将结构添加到Stutt

struct bin
{
    int *vector;
    int vectorSize;
    bin*next;
};
<>也可以,C++的索引数组为0,而不是1,所以你可以通过V->向量[0 ],v>向量[1 ]和v>向量[2 ]

来访问你所拥有的条目。

最后但并非最不重要的一点是,当已经有一个非常普通的C++向量类时调用它可能会有点混乱。您可以随时查看现有的stl::vector类,该类可以满足您的需要。

我假设您在高级别操作系统Windows、Linux上运行应用程序? 默认情况下,进程将映射到一定数量的物理内存

当您为vector[]分配内存时,系统会根据默认物理内存性能优化映射的内存分配内存

当你开始通过vector[]时,只要你在有效的内存地址内,你的程序就不会崩溃


C++,如果你尝试读写矢量[33776 ],那么你的程序很可能会崩溃,因为访问非分配内存的行为是未定义的。< /P>这是C++,不是C!不要使用不相关的标签。