相同大小数组的内存分配问题 我的C++代码有一种奇怪的行为。给你 OI_Id * Reqlist = 0; int * Idlist = 0; int Reqsize = listcount; // we calculate listcount somehow earlier. Idlist = new int [Reqsize]; if (Idlist == 0) { return; } printf ("Idlist = %0x",Idlist); Reqlist = new OI_Id [Reqsize]; // OI_Id is a 3rd party lib simple struct. if (Reqlist == 0) { return; } printf ("Reqlist = %0x",Reqlist);
所以问题是,在这两种情况下,它都打印相同的值——新操作符返回相同的指针。但是例如,如果我们将第二个分配数组的长度更改为另一个值Reqsize+1,则一切正常相同大小数组的内存分配问题 我的C++代码有一种奇怪的行为。给你 OI_Id * Reqlist = 0; int * Idlist = 0; int Reqsize = listcount; // we calculate listcount somehow earlier. Idlist = new int [Reqsize]; if (Idlist == 0) { return; } printf ("Idlist = %0x",Idlist); Reqlist = new OI_Id [Reqsize]; // OI_Id is a 3rd party lib simple struct. if (Reqlist == 0) { return; } printf ("Reqlist = %0x",Reqlist);,c++,arrays,allocation,C++,Arrays,Allocation,所以问题是,在这两种情况下,它都打印相同的值——新操作符返回相同的指针。但是例如,如果我们将第二个分配数组的长度更改为另一个值Reqsize+1,则一切正常 有人遇到过类似的行为吗?我不知道问题的原因是什么。尝试用%p打印指针。什么操作系统和处理器?我想,问题出在其他地方,因为这段代码--给出了不同的prints@juanchopanza问题不在输出中。进一步使用这些指针会导致数据错误-使用第二个数组时,第一个数组中的数据会被覆盖当您的代码被破坏时,您没有显示的地方。在任何情况下,用std::c
有人遇到过类似的行为吗?我不知道问题的原因是什么。尝试用%p打印指针。什么操作系统和处理器?我想,问题出在其他地方,因为这段代码--给出了不同的prints@juanchopanza问题不在输出中。进一步使用这些指针会导致数据错误-使用第二个数组时,第一个数组中的数据会被覆盖当您的代码被破坏时,您没有显示的地方。在任何情况下,用std::cout替换对printf的调用。这将避免未定义行为的潜在来源。