Usuário com melhor resposta
Dúvida com conversão de código de C++ para C#

Pergunta
-
Olá,
Eu estou convertendo um código em C++ para C# e tive algumas dúvidas com a sintaxe C++.
unsigned char* data = (unsigned char*)&fileBuffer[8]; long pos = 8; while(pos + 32 < fileSize){ data += 32; pos += 32; }
Minha dúvida neste trecho é em relação ao "data += 32" sendo que em C# unsigned char* seria um byte[] como seria possível inserir dados no data sem ter que criar um novo bloco de memória a cada loop? Eu fiz isso mas além do código não funcionar corretamente ele ficou muito lento, demorava cerca de 3 minutos pra executar tal operação.
E outra dúvida é em relação à isso:void WriteToMemory(Entry*& memory){ for(unsigned int i = 0; i < mCount; ++i){ memcpy_s(memory, sizeof(Entry), mEntries[i], sizeof(Entry)); ++memory; } }
Esse ++memory está me matando também.. não faço ideia do que ele faz.
Por favor me ajudem.
Agradeço desde já!
Respostas
-
Faz um bom tempo que não trabalho com C++, mas se me lembro bem, o ponteiro data inicialmente é posicionado no endereço de memória referente ao 9º elemento do vetor fileBuffer, daí a cada vez que você soma 32 ao ponteiro data ele avançaria 32 posições de memória.
Que tipo é este Entry?
O que seu código precisa fazer? Pois em código gerenciado muito não é mantido justamente por não se trabalhar com endereços de memória diretamente.
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
- Editado Juliano Nunes Silva Oliveira terça-feira, 15 de novembro de 2016 18:38
- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 18 de novembro de 2016 10:01
- Marcado como Resposta Robson William SilvaModerator sexta-feira, 18 de novembro de 2016 11:26
Todas as Respostas
-
Faz um bom tempo que não trabalho com C++, mas se me lembro bem, o ponteiro data inicialmente é posicionado no endereço de memória referente ao 9º elemento do vetor fileBuffer, daí a cada vez que você soma 32 ao ponteiro data ele avançaria 32 posições de memória.
Que tipo é este Entry?
O que seu código precisa fazer? Pois em código gerenciado muito não é mantido justamente por não se trabalhar com endereços de memória diretamente.
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".
Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".
- Editado Juliano Nunes Silva Oliveira terça-feira, 15 de novembro de 2016 18:38
- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 18 de novembro de 2016 10:01
- Marcado como Resposta Robson William SilvaModerator sexta-feira, 18 de novembro de 2016 11:26
-
Bom dia,
Devido a falta de interação do autor dessa pergunta,
essa thread está sendo fechada. Caso o problema ainda
esteja ocorrendo, favor abrir uma nova thread.
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.