【发布时间】:2014-03-20 05:03:56
【问题描述】:
基本上,一旦用户在命令行中输入数组,我只会知道数组的大小。
我不知道如何告诉全局数组是那个大小。我应该用malloc() 来做吗?这个数组应该是全局的,因为它将被线程共享。
【问题讨论】:
标签: c multithreading global
基本上,一旦用户在命令行中输入数组,我只会知道数组的大小。
我不知道如何告诉全局数组是那个大小。我应该用malloc() 来做吗?这个数组应该是全局的,因为它将被线程共享。
【问题讨论】:
标签: c multithreading global
是的,malloc() 是完全正确的。只需有一个指向正确数组类型的全局指针即可:
int* myGlobalArray;
那么在你将用户的输入捕获为 int 之后:
myGlobalArray = malloc(sizeof(*myGlobalArray)*userSize);
【讨论】:
myGlobalArray = malloc(userSize * sizeof *myGlobalArray); 更健壮。
malloc() 的结果是合法的,但不是一个好主意。不,这不是最近的事情。对于任何符合 1989 ANSI 标准或更高版本的 C 编译器都是如此。点击 unwind 评论中的链接。
sizeof 的参数是带括号的类型名称或表达式。从语法上讲,sizeof 是像 ! 或 ~ 这样的一元运算符,而不是函数。
是的,只需使用malloc()。当然,在线程之间共享内存时要非常小心。
不需要一个实际的全局变量来保存分配的内存,只需在创建时将其传递给线程即可。
【讨论】: