所以我分配了一块内存,malloc()稍后再更改realloc().
在我的代码中的某些时候我想要清空它,我的意思是基本上给它0的记忆.直观地完成它的东西realloc(pointer,0).我在这里读到这是实现定义的,不应该使用.
我应该改用free(),再做另一个malloc()吗?
我是pthreads的新手,我想知道确切的差异是什么.
pthread_exit退出一个线程.因此pthread_join将返回; 但是,分离的作用与pthread_join有什么不同?
例如,我创建一个线程,并说让线程完成,我想完全终止线程,以便我以后可以重新创建它.什么是更好的使用.pthread_join还是pthread_detach?
所以执行的顺序是
pthread_exit();
pthread_join(); or pthread_detach();
Run Code Online (Sandbox Code Playgroud)
?
因此,我有一小段代码在理论上可以轻松进行解析。
结构非常简单,非常类似于以下内容:
for (int i = 0; i < some_value; ++i) {
// we have a function called do_stuff
// somewhere in the code
// Create a new pthread
// using do_stuff as start routine
}
Run Code Online (Sandbox Code Playgroud)
现在,所有变量都不在线程之间共享。即,不需要线程之间的变量间通信。但是我确实使用变量i将数据写入数组等。
我想知道的是:如果我将变量i作为pthread启动例程的参数传递,并且i更改的值(因为i在下一个循环迭代中增加),那么i现有线程中的值是否也会更改?
所以我想知道函数中使用的内存会发生什么。我正在编写一个多线程程序,我想知道如果我只是在返回后调用函数及其内存会发生什么。