어쨌든 할 수 있습니까? 현재 다음과 같이 사용하고 있습니다.2D 배열과 같은 2D 벡터에 값을 할당하는 방법
for(i=0;i<PU_number;i++)
{
for(j=0;j<=time_slots;j++)
myMatrix.tempVec.push_back(0.0);
myMatrix.value.push_back(myMatrix.tempVec);
myMatrix.tempVec.clear();
}
그러나 유용하지 않습니다. 때로는이 벡터에서 특정 주소를 변경해야합니다. myMatrix.tempVec[1][4]
입니다. 나는 이런 식으로 작업을 수행 할 때 : 그것은 메모리를 손상
myMatrix.value[i][j]=value;
, 나는 그들처럼 물건의 SIGABRT
, SIGSESV
과 많이 얻을. 또한 내가 할 때 valgrind 미친 가져옵니다. 하지만 적절한 방법이 필요합니다.
편집 : 다음
myMatrix.value.resize(PU_number);
for(i=0;i<PU_number;i++)
myMatrix.value[i].resize(time_slots);
과 :
for(i=0;i<PU_number;i++)
{
for(j=0;j<time_slots;j++)
{
for(k=0;k<number_of_packets;k++)
{
double r=((double) rand()/(RAND_MAX));
for(x=myMatrix.mat[i][k];x<=myMatrix.mat[i][k]+myMatrix.len[i][k];x++)
myMatrix.value[i][x]=r;
}
}
}
을 내가 Valgrind의 다시 "규모 8의 잘못된 쓰기"를 가지고 너희들이 말을했다.
valgrind 사용을위한 도구. 그것이 무엇을 식별 고정하여 시작합니다. – WhozCraig
@WhozCraig 그것은 위에서 말한 방법을 받아들이지 않습니다. 그것은 "크기 8의 잘못된 쓰기"를 여러 번 말합니다. –
@Whcrs _ _for (x = myMatrix.mat [i] [k]; x <= myMatrix.mat [i] [k] + myMatrix.len [i] [k]; x ++)'_ loop doesn ' 나에게 많은 의미가있다. –