【发布时间】:2016-03-30 10:06:55
【问题描述】:
正在为赋值编写一些代码,以将整数作为输入并将它们放入要打印的数组中。
据我所知,我正在清理所有指针,但我不断收到运行时错误:
1 [main] new 3444 cygwin_exception::open_stackdumpfile: Dumping stack trace to new.exe.stackdump
代码主体:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int array[10];
int * p = array;
int *readNumbers()
{
int i=0;
for(i=0;i<10;i++)
{
string number;
int numb;
cout << "enter digit " << i << " of 10" << endl;
getline(cin, number);
istringstream (number) >> numb;
array[i]=numb;
}
return p;
delete p;
}
void printNumbers(int *numbers,int length)
{
int i;
for(i=0;i<length;i++)
{
cout << i << " " << *(numbers+i) << endl;
}
}
及主要调用代码:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
extern int *readNumbers();
extern void printNumbers(int *,int);
int main()
{
int * q = readNumbers();
printNumbers(q,10);
delete q;
return 0;
}
所以只是寻找堆栈转储的解决方案...
此外,我确定我用来将cin 返回的string number 应用于array[10] 中包含的值的方法不是问题所要寻找的,因此对此的任何注释都会很棒。
谢谢
【问题讨论】:
-
最佳解决方案取决于您的开发环境,因此您需要详细说明您的操作系统、编译器、IDE 等。
-
旁注:
delete p;在return p;之后永远不会执行。为什么要删除无论如何都没有分配新的东西?这实际上适用于您的主要功能中的delete q;,我认为这是您崩溃的根本原因 -
不应在主调用代码中删除 q,因为 q 指向数组
标签: c++ arrays string pointers stack-trace