我有这样的事情:
DWORD WINAPI test(LPVOID lpParam) {
while (1) {
/*DO STUFF*/
}
}
int main() {
...
hThread = CreateThread(NULL,0,test,NULL,0,&dwThreadId);
...
}
Run Code Online (Sandbox Code Playgroud)
如何在没有TerminateThread()的情况下关闭线程?我的第一个想法是创建一个全局变量(shouldshutdown = 0/1),当Thread应该关闭时将它设置在main()中.然后在Thread中调用ExitThread().因此,我必须在线程的while循环中检查此变量,这是我猜的坏样式.
我找到了以下示例:
typedef struct {
char * name;
char age;
} person;
person * myperson = malloc(sizeof(person));
myperson->name = "John";
myperson->age = 27;
Run Code Online (Sandbox Code Playgroud)
(http://www.learn-c.org/en/Dynamic_allocation)
我想我在这个例子中分配了8个字节(sizeof(人)).因此,当我将"justatestfoobar"分配给myperson-> name时,我认为我炸毁了程序...
有人可以解释为什么以及如何运作?
我在想什么:
BYTE test[] = {0x00,0x00,0x00,0x00};
*(test+1) = 0xFFFF;
Run Code Online (Sandbox Code Playgroud)
我得到了什么:
00000000 11111111 00000000 00000000
Run Code Online (Sandbox Code Playgroud)
我期望或想要实现的目标:
00000000 11111111 11111111 00000000
Run Code Online (Sandbox Code Playgroud)
背景:在我的程序的一部分中,我需要将WORD插入到数组的一部分中.是的,通常我可以做
*(test+1) = 0xFF;
*(test+2) = 0xFF;
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有可能像第一个例子中那样做一个单行.Memcpy在这里没有选择,因为我需要为第二个数组分配空间.