小编Knt*_*lii的帖子

如何在C中正常关闭线程

我有这样的事情:

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循环中检查此变量,这是我猜的坏样式.

c winapi

5
推荐指数
1
解决办法
250
查看次数

C动态内存分配如何工作

我找到了以下示例:

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时,我认为我炸毁了程序...

有人可以解释为什么以及如何运作?

c malloc pointers dynamic-memory-allocation

2
推荐指数
1
解决办法
174
查看次数

如何在数组中修改多个字节?

我在想什么:

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在这里没有选择,因为我需要为第二个数组分配空间.

c

2
推荐指数
2
解决办法
87
查看次数

标签 统计

c ×3

dynamic-memory-allocation ×1

malloc ×1

pointers ×1

winapi ×1