【问题标题】:setting an integer pointer to an integer array and passing arguments to pthread_create设置指向整数数组的整数指针并将参数传递给 pthread_create
【发布时间】:2013-10-20 22:16:34
【问题描述】:

首先,我不确定如何将整数指针设置为数组。其次,这是设置 pthread_create 参数的正确方法吗?

这是我的参数结构:

typedef struct args {
    int *arr;
    int number;
} args;

我创建了一个指向结构的指针:

args *arguments = (args *)malloc(sizeof(args));

我需要将 args.arr 的每个元素设置为 argv(命令行参数)作为整数。我不太明白如何设置 args.arr 的每个元素:

for(i = 1; i < argc; i++)
    arguments->arr[i] = atoi(argv[i]); // Edit: Segmentation fault on this line

我创建了一个线程数组:

pthread_t threads[4];

..并将参数传递给每个函数调用:

for(i = 0; i < 4; i++)
    pthread_create(&threads[i], NULL, func, arguments);

【问题讨论】:

  • 请不要说“这不起作用”而不说 what 不起作用。这完全没有帮助。

标签: c arrays multithreading pointers


【解决方案1】:

arr是一个int指针,所以需要先分配:

arguments->arr = malloc(argc * sizeof(int));

那么你就可以正确分配了:

for(i = 1; i < argc; i++)
    arguments->arr[i] = atoi(argv[i]);

【讨论】:

    【解决方案2】:

    您似乎没有将arguments-&gt;arr 的值初始化为指向有效的int

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      • 2012-03-13
      相关资源
      最近更新 更多