我正在编写一个带有两个线程的 C++ 应用程序。线程 A 将向线程 B 发送消息。消息类型可以是:
struct MyMessageType
{
int a;
enum MyEnum b;
bool someFlag;
}
Astd::queue<MyMessageType> messageQueue
在线程之间共享,用于传递消息。
在发送线程中,我会有类似的东西:
struct MyMessageType newMessage;
newMessage.a = 14;
newMessage.b = someEnumeratedValue;
newMessage.someFlag = false;
GrabTheMutexProtectingTheQueue();
messageQueue.push(newMessage);
ReleaseTheMutexProtectingTheQueue();
我的问题是关于内存管理的,有两个方面:
A)如何确保newMessage
接收线程收到消息时指向的指针有效?例如,如果创建的函数在接收线程处理消息之前newMessage
结束并newMessage
因此超出范围,会发生什么?
B)一旦我可以确保newMessage
在接收线程处理它时指针是有效的,我如何释放结构使用的内存?