У меня есть функция потока, создающая некоторую структуру, называемую ячейкой данных, и передающая ее другой функции, которая должна заполнить данные ячейки данных.
после заполнения ячейки данных данными я могу распечатать данные в той же функции заполнения, но при возврате к функции потока не может распечатать их, говоря «недопустимые символы в строке». это код функции потока:
unsigned __stdcall some_class::WriteBufferToFile(void * args) {
queue<wstring> * Q = (queue<wstring> *)args;
myfile->open(ThisObj->DebugOutputPath, ios::out | ios::app | ios::binary);
DataSlot * d = new DataSlot;
ThisObj->ConvertCharactersToDataSlot(*Q, d);
for (unsigned i = 0; i < d->Size; i++) { // printing doesn't works here !
cout << d->RawData[i];
*myfile << d->RawData[i];
}
myfile->close();
delete d;
return 0;
}
это код ConvertCharactersToDataSlot:
void some_class::ConvertCharactersToDataSlot(queue<wstring> ToConvert, DataSlot * d) {
wstring CombineStr = L"";
while (!ToConvert.empty()) {
CombineStr += ToConvert.front();
ToConvert.pop();
}
unsigned size = wcslen(CombineStr.c_str()) * sizeof(CombineStr[0]);
d->Size = size;
d->RawData = new BYTE[size];
d->RawData = reinterpret_cast<BYTE *>(&CombineStr[0]);
for (unsigned i = 0; i < d->Size; i++) { // printing works here !
cout << d->RawData[i];
}
}
Мне действительно нужно решить эту проблему, я не могу понять, почему это происходит, в соответствии с методами управления памятью OS это не имеет смысла, что память не читается. может быть, это какая-то ошибка в моем коде, какие-нибудь идеи, ребята?