Проблемы с memcpy
Работа над проектом C с использованием Eclipse CDT
Самое странное происходит!
При отладке я вижу, что значения iu1 перезаписываются после двух итераций в цикле for.
Я редактировал этот вопрос сейчас.
Пожалуйста, посмотрите на код ниже.
typedef struct IUnitStruct
{
long ptr;
char key[1];
}iUnit;
void createInternalNode(internalNode ** n)
{
int iUnitSizeJump = 1012 ;
iUnit* iu1 = (iUnit*) malloc(iUnitSizeJump);
iu1->ptr = -1;
strcpy(iu1->key,"NullKey1");
iUnit* iu2 = (iUnit*) malloc(iUnitSizeJump);
iu2->ptr = -2;
strcpy(iu2->key,"NullKey2");
for (int i = 0 ; i < 8; i=i+2 )
{
memcpy(&(*n)->iunit[(i)*(iUnitSizeJump)],iu1,iUnitSizeJump);
memcpy(&(*n)->iunit[(i+1)*(iUnitSizeJump)],iu2,iUnitSizeJump);
}
}
void printNode(internalNode *n, int iUnitSize)
{
for (int i = 0 ; i < 8; i++ )
{
cout << "||Page:" ;
cout << n->iunit[i*iUnitSize].ptr;
cout << "|";
cout << n->iunit[(i*iUnitSize)].key;
cout << "|| ";
}
}
Вот вывод
||Page:-1|NullKey1||
||Page:-2|NullKey2||
||Page:0|||
||Page:-2|NullKey2||
||Page:0|||
||Page:-2|NullKey2||
||Page:0|||
||Page:-2|NullKey2||
Мне нужно, чтобы показать
||Page:-1|NullKey1||
вместо
||Page:0|||