내 배열의 요소를 삭제하는 데 문제가 있습니다. 아래 코드 중 일부를 볼 수 있습니다.C++ 프로그램 문자 배열을 삭제할 때 종료 됨
두 번째 실행에서 delete[] payload[x].data
두 번째 루프에서 for
루프가 실행되면 프로그램이 종료됩니다.
struct s_payload{
u_char data[300];
}
.
.
u_char sample[300] ="Lorem ipsum dolor sit amet, eu mea laudem impetus.";
int _bufferSizeConnection = 1000;
int testCounter = 0;
s_payload* activeBuffer = new s_payload[_bufferSizeConnection];
for (;;) {
for (long int counter = 0; counter < _bufferSizeConnection; counter++) {
memcpy(activeBuffer[counter].data, sample, 299);
}
//_buffersConnection is std::queue
_buffersConnection.push(activeBuffer);
testCounter += 1;
if (testCounter == 15) {
LOG_INFO(">testcounter %d", testCounter);
break;
}
activeBuffer = new s_payload[_bufferSizeConnection];
}
for (int i = 0; i < 15; i++) {
//taking one of the activeBuffer from _buffersConnection
s_payload* payload = _buffersConnection.wait_and_pop();
for (int x = 0; x < _bufferSizeConnection; x++) {
u_char* current= payload[x].data;
delete[] payload[x].data; //Exit at the second running of this line;
}
delete[] payload;
}
이 코드 조각에는 어떤 문제가 있습니까? 미리 감사드립니다.
새로 전화하지 않은 것을 삭제할 수 없습니다. 참조하십시오 : http://stackoverflow.com/questions/40134139/c-delete-a-pointer-free-memory – NathanOliver
struct s_payload @ NathanOliver 고정 된 크기의 문자 배열을 선언했습니다. –