【发布时间】:2014-04-12 23:02:04
【问题描述】:
我有以下功能:
int *array1=new int [3];
void My_function()
{
My_set(array1);
for(int i=0;i<3;i++){ //The output is 5 15 55
cout<<array1[i]<<endl;
}
Display (array1)
}
void My_set(int *array1)
{
array1[0]=5;
array1[1]=15;
array1[2]=55;
}
void Display(int *array1){
for(int i=0;i<3;i++){
cout<<array1[i]<<endl; //The output is Garbage -842150451
}
}
注意:这个问题发生在复杂的项目中,但我用简单的代码展示了我的问题! 谢谢你:)
【问题讨论】:
-
为我工作ideone.com/GBkVTo...
-
使用
std::vector<int>,当您在大多数调试编译器中溢出缓冲区时,它会警告您。 -
@awesomeyi:您编译的代码具有未定义的行为。所以它做你期望它做的事情是无关紧要的。
-
尝试 int *array1 = new int[3];
-
通常使用原始指针不是一个好主意。在您已知元素数量的情况下,请使用“std::array”(例如,“std::array
array1”)。