I 배열 가지고쓰기가 [I] [0] [1]도 덮어 [I] [1] [0]와 반대
typedef short int long_graph[1000][1000][1];
을 그것을 선언
long_graph paf_graph;
나는 기능이 있습니다
,741,286,563 : 나는 여기에 문제를 감지void construct_paf_graph (sf::Vector2i A,sf::Vector2i B, long_graph &paf_graph, long_list &paf_list, poly_list &poly, int &no_of_poly_on_map, list_of_indexes &XX )
{
short int n,i,j,k,e, t, off; // t is used to convert indices from individual polies to the unified list
bool path_clear;
short int distance, rev_en_ind; // reverse engineer index
n=0; //will be total number of points in paf_graph and paf_list
t=0;
std::fstream debug;
debug.open("assets/debug.txt", std::ios::out | std::ios::trunc);
for (i=1; i<=XX[0]; i+=1)
{
debug << XX[i] << "\n";
for (j=1; j<= poly[XX[i]].point[0].x; j+=1)
{
n+=1;
paf_graph[n][0][0] = poly[XX[i]].graph[j][0][0];
//paf_graph[n][0][1] = i;
debug << "P["<<n<<"] = " << paf_graph[n][0][1] << " \n";
for (k=1; k<= poly[XX[i]].graph[j][0][0]; k+=1)
{
paf_graph[n][k][0] = poly[XX[i]].graph[j][k][0] + t;
paf_graph[n][k][1] = poly[XX[i]].graph[j][k][1];
debug << " P["<<n<<"] = " << paf_graph[n][0][1] << " " << "k="<<k<< " c="<<poly[XX[i]].graph[j][k][0] + t<<" \n";
if (k==1) debug << "\n\n PP = " << paf_graph[n][k][0] << " " << poly[XX[i]].graph[j][k][0] + t <<"\n";
}
off = paf_graph[n][1][0];
paf_graph[n][0][1] = i;
//paf_graph[n][1][0] = off;
paf_list[n].x = poly[XX[i]].point[j].x;
paf_list[n].y = poly[XX[i]].point[j].y;
}
debug << "\n";
t+= poly[XX[i]].point[0].x;
}
paf_graph[0][0][0] = n;
paf_list[0].x = n;
// function continues some more
큰 코드 블록에서와 같이
210 I 3 개 여분 라인을 넣어 이상한 현상을 분리 : 배열 자체가
off = paf_graph[n][1][0];
paf_graph[n][0][1] = i; //this line also writes i to [n][1][0]
//paf_graph[n][1][0] = off; //if I take the comment off this line it will
// write "off" to [n][0][1] as well
//so whatever I do they both have the same value
//and one is always wrong
이상한 일이있다 [1000] [1000] [1] 단 INT 및 다른 좌표의 경우 잘 동작합니다. 나는 그것을 더 작게 만들려고 시도했다. 그러나 문제는 동일하다. 전달되는 값은 short int 내에서 100보다 낮다.
배열이 함수에 대한 참조로 전달되고 이후 메인 블록에서 사용되며 모든 값이 [i] [0] [1] [i] [0] [0] .
불행히도 코드가 매우 크기 때문에이 코드를 게시 할 수는 없지만 위에서 설명한 부분과는 별도로 문제가 격리되었다는 것을 두 번 확인했습니다.
이상한 행동이 왜 일어나는지 누군가 알고 있다면 도움을 주시기 바랍니다.
나는 mingw 컴파일러에서 알려진 오류 일 가능성이 있기 때문에 codeblocks에 태그를 추가 했습니까?
어쨌든 사전에 조언 해 주셔서 감사합니다.
감사합니다. 나는 그런 신인 선수 실수에 빠졌다는 것을 믿을 수 없다. – user3515319