서로 크기가 다른 데이터를 리스트 구조에 첨가하기...

onlytobe의 이미지

안녕하세요.
데이타를 생성한 다음 넘겨주려고 하는데 이게 잘 안되네요.
데이터 형은 unsigned char형입니다.
우선 데이타의 수가 일정치 않아서 동적으로 할당 하려고 합니다.
그렇지만 데이터의 크기가 일정하면 별 문제가 없는데 데이터가 가변합니다.
즉,
1번 데이터는

 
 typedef unsigned char BYTE
BYTE *data;
data = new BYTE[100];
// 리스트에 삽입
data = new BYTE[80];
// 리스트에 삽입

이런식으로 작업을 하고 나서 리스트 변수의 포인터를 넘겨주고 싶은데
내공이 부족하여 생각만 했지 어떻게 해야 할지 모르겠네요.
내공좀 쪼매 올리게 도와주세요..
좋은 하루 되세요.

서지훈의 이미지

어떤 리스트에 어떤 놈을 어떻게 연결 시키겠다는 건지?
그리고 그렇게 해야 하는 이유는?

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

추신_몇 번이나 읽어 봐도 질문의 의도를 몰라서.

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

onlytobe의 이미지

죄송! 죄송!
제가 질문을 엉성하게 써놨군요.
제가 하는 작업은 패킷을 만드는 작업입니다.
패킷의 cmd 부분은 데이터 크기가 동일한데 그 뒤에 붙는 데이터는
type에 따라 데이터의 크기가 다릅니다.
작업은 데이터가 있으면 여러개의 장비로 동시에 전송을 합니다.
이때 물론 쓰레드를 이용하여 각 머신과 연결하여 전송을 하게 됩니다.
기존에는 여러개의 데이터가 있으면 하나의 데이터에 대한 패킷을 각 쓰레드에서 만들어서 전송하게 하였습니다.
근데 똑같은 작업을 여러 쓰레드에서 하고 있으니 너무 비효율적인 것 같아서
쓰레드로 데이터를 넘겨주기 전에 원하는 데이터 수 만큼 패킷을 생성한 다음
그 패킷들을 리스트 같은 구조에다 집어 놓고 이 리스트를 쓰레드에 넘기려고 합니다.
근데 각 크기가 다른 패킷들을 생성한 다음 리스트에 넣고 싶은데
이걸 잘 몰라서 질문을 드렸습니다.
죄송죄송

hanseok의 이미지

onlytobe wrote:

 
 typedef unsigned char BYTE
BYTE *data;
data = new BYTE[100];
// 리스트에 삽입
data = new BYTE[80];
// 리스트에 삽입

struct list {
   struct list* next;
   BYTE ** item;
}

이렇게 하면 안되나요?

item = data;

음 안해봐서 모르겠지만. new를 통해서 힙영역에 메모리를 할당했으니.

그 포인터를 리스트에 추가해주면 될듯한데요..

역시 내공이 필요해.~~ === 좋은 답변이 더 올라오길 기대해 봅니다.

잠이 들어야지만 꿈을 꿀수 있는것인가?
우리는 항상 꿈을 쫓아 가며 살아가는 사람들..