Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
相同大小数组的内存分配问题 我的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 - Fatal编程技术网

相同大小数组的内存分配问题 我的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++代码有一种奇怪的行为。给你 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

所以问题是,在这两种情况下,它都打印相同的值——新操作符返回相同的指针。但是例如,如果我们将第二个分配数组的长度更改为另一个值Reqsize+1,则一切正常


有人遇到过类似的行为吗?我不知道问题的原因是什么。

尝试用%p打印指针。什么操作系统和处理器?我想,问题出在其他地方,因为这段代码--给出了不同的prints@juanchopanza问题不在输出中。进一步使用这些指针会导致数据错误-使用第二个数组时,第一个数组中的数据会被覆盖当您的代码被破坏时,您没有显示的地方。在任何情况下,用std::cout替换对printf的调用。这将避免未定义行为的潜在来源。