小编P.P*_*.P.的帖子

使用 pthread_create() 创建超过 1000 个线程

我正在尝试使用该函数创建 1000 个线程pthread_create()

这是我正在使用的声明:

for (int i=0 ; i <1000; i++)
{
   retValue = pthread_create(&threadId, NULL, simplethreadFunction, NULL);
}
Run Code Online (Sandbox Code Playgroud)

每次运行这个 for 循环时都会创建一个新线程吗?

这是一件简单的事情。但我无法理解它。

c++ posix

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

为什么我的999999999的浮动变成10000000000?

当我执行以下代码时,它有一个问题:

float number = 999999999;
printf("%lf", number);
Run Code Online (Sandbox Code Playgroud)

结果是10000000000而不是999999999.

为什么不呢999999999

c floating-point

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

使用 fork 时 while(wait(NULL)){} 和 while(wait(NULL) &gt; 0){} 有什么区别

我有以下代码:

#include<stdio.h>
#include<stdlib.h> 
#include<sys/wait.h> 
#include<unistd.h> 

int main() {
for(int i = 0; i <3; i++){
    fork();
}
while(wait(NULL)){}
printf("Text\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试执行它时,我SIGKILL从 fork 调用中收到一条错误,而不是收到 8 条短信。但是,如果我改变

while(wait(NULL)){}
Run Code Online (Sandbox Code Playgroud)

while(wait(NULL) == 0){} 
Run Code Online (Sandbox Code Playgroud)

或者

while(wait(NULL) > 0){}
Run Code Online (Sandbox Code Playgroud)

我按预期收到了 8 张“文本”打印件。

为什么程序在第一种情况下不起作用?wait(NULL)循环或循环不是wait(0)应该等到所有子进程执行完毕吗?

谢谢您的帮助!

c posix fork wait

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

STL容器类:数组

我只是在C++中探索STL容器.有一些问题......有两个成员函数max_size()和size().他们似乎在做同样的事情.我最初认为max_size()是数组的实际大小,而size()是显式存储的元素数.但是当我测试它时,事实并非如此.那为什么两个不同的功能?

有没有什么地方可以读取Java中的容器设计规范(不是功能描述)?我似乎有很多问题,例如为什么std :: array大小是固定的但是不能像std :: vector那样动态地改变等.显然,这样的设计决策有一个或另一个原因.阅读此类设计规范以理解这些限制将是有用的.我有一个旧的"有效STL",它不包括std :: array.我相信Scott meyers尚未包含std :: array.

c++ stl

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

在CI中,可以将void*分配给char*,但不能分配给C++

如果文件是.c MSVC将编译.

如果它是.cpp它 "cannot convert from 'void *' to 'unsigned char *'"

我使用MEMORY_BASIC_INFORMATION::BaseAddresswindows.hvoid*,将其分配给一个char*让我看见你知道实际的地址?

当我把它转换为char*,然后回到void*(在windows函数中使用它)时,它就像错误并丢失数据或其他东西

该怎么办?

c c++ windows char void-pointers

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

linux kernel/sched.c - find_process_by_pid - 如何从ac应用程序代码中使用它

Linux-2.6.35.13 kernel/sched.c有一个函数find_process_by_pid().我尝试使用以下代码:

int main()
{
    struct task_struct *p;
    pid_t pid;
    pid=2130; 

    p = find_process_by_pid(pid);

    printf("task_struct.state: %s\n", p->state);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

$ gcc getProcbyId.c -o getProcbyId

获取以下警告和错误:

getProcbyId.c: In function 'main':
getProcbyId.c:19:4: warning: assignment makes pointer from integer without a cast
getProcbyId.c:21:37: error: dereferencing pointer to incomplete type
Run Code Online (Sandbox Code Playgroud)

请提供建议如何解决这个问题.

c linux-kernel

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

指针 - 参考向量

我习惯用C#或Java编程,所以我在C++中做得很糟糕.我相信这很容易,但我无法做到这一点.请帮我.

我有这个:


void swap(vector  * vet, int i, int j)
{
    int temp = vet[i];
    vet[i] = vet[j];
    vet[j] = temp;
}

我用这种方式调用方法:


swap(&vet, j, j - 1);

我想要的是使用指针而不是使用值传递向量.

Obs:代码编译良好,没有"*"和"&".

请不要说我必须至少尝试学习指针,因为我做到了.我只是不能让这个该死的东西工作!

c++ pointers

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

设置对第二个变量的引用

我期待b的值低于100,但我得到12.为什么会这样?显然我的c = b行不是将c指定为b的别名?

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int a = 4;
    int b = 12;
    int& c = a;

    c = 8;

    cout << a << endl;
    c = b;
    c = 100;

    cout << b << endl;


    int bb;
    cin >> bb;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ reference

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

语言c,编译时错误多次未排序的修改[-Werror,-Wunsequenced]

这是我的函数的定义:

char *strsub(char const *s, unsigned int start, size_t len){
   blabla
   blabla
   while (len > 0)
   {
      len--;
      cpy[start++] = s[start++];
   }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时出现此错误:

错误 : 多次无序修改启动 -Werror , -Wunsequenced

我根本不明白那个错误。

c

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

规范化glTranslatef()

glTranslate()的参数指定原点转换的单位数量.因此,有可能超越显示器.有没有办法规范我们移动的数量,以便我们不超出绘图区域?

c opengl

0
推荐指数
1
解决办法
367
查看次数