이 출력으로 인해 프로그램이 작동을 멈 춥니 다. 어떻게 할당을 해제 할 수 있습니까? 나는 내 코드에서 가지고있는 것을 시도했지만 그것은 도움이되지 않는다. 전체 코드는 여기에서 찾을 수 있습니다 :이 코드를 실행하면 full code배열 메모리를 어떻게 할당 해제 할 수 있습니까?
for (i = 0 ; i < n ; i++) {
if (
!((x[i] >= 0) && (x[i] <= a) &
(y[i] >= 0) && (y[i] <= b)
)
) {
cout << x[i] << ' ' << y[i] << ' ' << s[i] << ' ' << "SPADOL" << endl;
} else {
cout << x[i] << ' ' << y[i] << ' ' << s[i] << endl;
} // ALLOCATION IS DONE AT THIS POINT
delete [] x;
delete [] y;
delete [] s;
}
, 내가 입력 x와 y를 시작하고 내가 y 값을 입력 한 직후, 프로그램이 작동을 멈 춥니 다. 한 행만 입력하면 프로그램이 완벽하게 실행되지만 두 개 이상의 행을 입력하려고 할 때 문제가 발생합니다 .. 첫 번째 출력이 인쇄 된 직후 프로그램이 충돌합니다. 벡터와 내 전체 코드 : x
, y
및 s
동적 new[]
및 n > 1
를 통해 할당 할 수있는 배열을 가정
#include <iostream>
#include <string>
#include <vector>
#include <stdlib.h>
#include <string>
using namespace std;
// vector<string> inputs;
int n; // pocet uloh
int a; // rozmer obdlznika a
int b; // rozmer obdlznika b
vector<int> x;
vector<int> y;
vector<string> s;
int i;
int d;
static const char alpha[] = {'D', 'L', 'P'};
char genRandom()
{
return alpha[rand() % strlen(alpha)];
}
// end of generator
int main() {
cin >> n;
while(!((n >= 1)&&(n <=15000)))
{
cout << "max 15000" << flush;
cin >> n;
}
cin >> a >> b;
while(!((a >= 1)&&(a <=100) & (b >= 1)&&(b <= 100)&&(a!=b)))
{
cout << "chyba max 100 alebo a!=b" << endl;
cin >> a >> b;
}
for (i = 0; i < n; i++)
{
cout << "Uloha " << i+1 << ":" << endl;
cin >> x[i];
cin >> y[i];
cin >> s[i];
while(!((x[i]>=0)&&(x[i]<=a))) {
cout << "Try Again x: " << flush;
cin >> x[i];}
while(!((y[i]>=0)&&(y[i]<=b))) {
cout << "Try Again y: " << flush;
cin >> y[i];}
if (s[i] == "S"){
y[i] = (y[i]+1);
}else if (s[i] == "J"){
y[i] = (y[i]-1);
}else if (s[i] == "V"){
x[i] = (x[i]+1);
}else if (s[i] == "Z"){
x[i] = (x[i]-1);
}
cin >> d;
while(!((d>=1)&& (d<=200))) {
cout << "Try Again d: " << flush;
cin >> d;}
for (int counter=0; counter<d; counter++)
{
cout << genRandom();
}
cout << endl;
} // koniec for
for (i = 0 ; i < n ; i++)
{
if(!(((x[i]>=0)&&(x[i]<=a)) | ((y[i]>=0)&&(y[i]<=b)))){
cout << x[i] << ' ' << y[i] << ' ' << s[i] << ' ' << "SPADOL" << endl;
}else{
cout << x[i] << ' ' << y[i] << ' ' << s[i] << endl;
}
}
system("pause");
}
전체 코드가 표시되지 않습니다 ... 할당이 완료된 곳은 어디입니까? –
문제를 표시하는 코드를 제공하는 경우 오류를 생성하는 데 필요한 모든 코드를 포함하고 오류와 관련없는 코드는 제거하십시오. 예를 들어, 여러분이 제공 한 대부분의 코드 (전체'if' /'else' 블록)는 할당이나 할당 해제에 아무런 영향을주지 않으므로 질문에 대한 순수한 소음입니다. 보너스로, 질문을 게시하기 전에 그렇게했다면 루프 내부에서'[array [; array];를 보았을 것입니다. 따라서 게시하기 전에 실수를 알아낼 수 있습니다. – mah
링크 된 코드는'malloc'을 사용합니다. 이 경우에는'free'를 사용하여'delete'를하지 말아야합니다. – Mat