小编Tim*_*Tim的帖子

为什么输出不能跟随输入,反之亦然?

来自APUE

当打开文件进行读写(类型中的加号)时,有两个限制.

•如果没有干预fflush,fseek,fsetpos或倒带,输出不能直接输入.

•输入不能直接跟随输出而没有介入的fseek,fsetpos或倒带,或者遇到文件结束的输入操作.

为什么在这两种情况下"fseek,fsetpos或倒带"?

为什么在第二种情况下"输入操作遇到文件结束"?

谢谢.

Linux API的一个类似问题是可以`read()`直接后跟`read()`和`read()`的`write()`?

c linux

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

编译器可以将`execl(prog,arg,(void*)0)`中的`(void*)0`转换为适当类型的空指针吗?

来自Linux编程接口

execl(prog, arg, (char *) 0);
execl(prog, arg, (char *) NULL);
Run Code Online (Sandbox Code Playgroud)

铸造 NULL 在上述上次通话的方式,一般要求,甚至 在其中实现 NULL 被定义为(void *) 0.

这是因为,虽然C标准要求不同类型的空指针在相等性比较时应该测试为真,但它们不要求不同类型的指针具有相同的内部表示(尽管在大多数实现中它们都这样).
并且, 在可变参数函数中,编译器无法强制(void *) 0 转换为适当类型的空指针.

在C类标准有一个例外的规则,不同类型的指针不必具有相同的表示:指针的类型char *,并void *须具有相同的内部表示.这意味着在示例的情况下传递(void *) 0 代替(char *) 0不会成为问题 execl(),但是,在一般情况下,需要强制转换.

  1. " NULL 通常需要以上述最后一次电话的方式进行投射 "

    C标准是否要求空指针表示为(char*) 0

  2. "在变量函数中,例如execl(),编译器无法强制(void *) 0转换为适当类型的空指针."

    (void *) 0不是一个类型的空指针?

    如果是的话,为什么不能编译投(void *) 0execl(prog, arg, (void*) 0) …

c posix pointers null-pointer

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

这里使用持久ID来解决什么pickle问题?

来自https://docs.python.org/3/library/pickle.html#persistence-of-external-objects

\n\n
\n

为了保证对象持久性,pickle 模块支持 对 pickled 数据流外部对象的引用概念。\n 此类对象由持久 ID 引用,该 ID 应该是\n字母数字字符串(对于协议 0)或任意对象(对于任何较新的协议)。

\n
\n\n

如果有人能解释一下,我将不胜感激:这里使用持久 ID 来解决的酸洗问题是什么?也就是说,如果不使用持久化ID,pickling会有什么问题呢?

\n\n

特别是,“对腌制数据流之外的对象的引用的概念”是什么意思?它是否与其他一些概念相反,例如“对腌制数据流内的对象的引用的概念”?

\n

python pickle python-3.x

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

在类Functor的声明中,类型变量可以是函数类型吗?

在Haskell中,该类Functor声明为:

class   Functor f   where
fmap    ::  (a  ->  b)  ->  f   a   ->  f   b
Run Code Online (Sandbox Code Playgroud)

可以输入变量ab是函数类型,或者他们必须是非功能类型?

如果它们可以是函数类型,那么就可以使类应用于具有任意数量的参数的函数而言,类是否与class Functor有效地相同?根据赫顿在《 Haskell编程》中所说:Applicativefmap

函子抽象了fmap将功能映射到结构的每个元素上的想法 。应用程序将此想法概括为允许 fmap映射具有任意数量参数的映射函数,而不是仅限于具有单个参数的函数。

适用:

fmap0 ::  a   ->  f   a
fmap0 =   pure
fmap1 ::  (a  ->  b)  ->  f   a   ->  f   b
fmap1 g   x   =   pure    g   <*> x
fmap2 ::  (a  ->  b   ->  c)  ->  f   a   ->  f   b   -> …
Run Code Online (Sandbox Code Playgroud)

haskell functor applicative

5
推荐指数
3
解决办法
160
查看次数

如何检测C++中的溢出?

我只是想知道是否有一些方便的方法来检测在运行时期间C++程序中使用的任何默认数据类型的任何变量是否发生溢出?方便的是,我的意思是,如果每个变量的值都在其数据类型的范围内,则无需编写代码来跟踪每个变量.或者如果不可能实现这一点,你会怎么做?

例如,

float f1=FLT_MAX+1;
cout << f1 << endl;
Run Code Online (Sandbox Code Playgroud)

在使用"gcc -W -Wall"编译或运行时,不会给出任何错误或警告.

感谢致敬!

c++ gcc overflow

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

bash中的awk和printf

我想在过去5分钟内得到平均负荷的四舍五入.所以这是我的命令:

 uptime | awk -F, '{print $5}'|printf "%.0f\n"
Run Code Online (Sandbox Code Playgroud)

它似乎不正确,因为它总是给我0.

如果我试图在awk和printf之间使用变量作为中间,那么它是正确的

 avgload=$(uptime | awk -F, '{print $5}')

 printf "%.0f\n" $avgload
Run Code Online (Sandbox Code Playgroud)

我的第一次尝试有什么不对吗?

感谢致敬!

更新:

只是为了获得过去5分钟的平均负载,这是我的linux服务器(Kubuntu)的正常运行时间输出

$ uptime
13:52:19 up 29 days, 18 min, 15 users, load average: 10.02, 10.04, 9.58

在我的笔记本电脑(Ubuntu)上它是相似的

`$正常运行时间

13:53:58上3天,12:02,8个用户,平均负载:0.29,0.48,0.60`

这就是我参加第五场比赛的原因.

bash awk printf

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

共享内存与分布式内存和多线程与多进程

我正在学习并行编程.我想知道分布式内存是否总是多进程,多线程总是共享内存?如果多进程可以用于分布式内存和共享内存?感谢致敬!

parallel-processing distributed-computing shared-memory

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

从文件对象到文件名

我想知道我们是否可以从我们为C和C++中的文件名创建的文件对象中获取文件名,包括其路径

FILE *fp = fopen(filename, mode); // in C
ofstream out(filename); // in C++
ifstream in(filename);  // in C++
Run Code Online (Sandbox Code Playgroud)

谢谢!

c c++ file

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

运行时确定C的类型

如果变量的类型必须在C中确定为运行时但变量名是固定的并且给定,是否有任何方法可以重用涉及变量的代码?

实际上我在询问C++运行时确定类型的C对应情况.

如果可能的话请举一些例子.

c runtime-type

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

滥用 OpenMP?

我有一个使用 OpenMP 来并行化 for 循环的程序。在循环内部,线程将写入共享变量,因此我需要同步它们。但是,我有时会遇到段错误或双重释放或损坏错误。有谁知道会发生什么?感谢致敬!这是代码:

void KNNClassifier::classify_various_k(int dim, double *feature, int label, int *ks, double * errors, int nb_ks, int k_max) {   
  ANNpoint      queryPt = 0;    
  ANNidxArray   nnIdx = 0;      
  ANNdistArray  dists = 0;     

  queryPt = feature;      
  nnIdx = new ANNidx[k_max];                
  dists = new ANNdist[k_max];               

  if(strcmp(_search_neighbors, "brutal") == 0) {// search  
    _search_struct->annkSearch(queryPt, k_max,  nnIdx, dists, _eps);  
  }else if(strcmp(_search_neighbors, "kdtree") == 0) {  
    _search_struct->annkSearch(queryPt, k_max,  nnIdx, dists, _eps);  // double free or corruption
  }  

  for (int j = 0; j < …
Run Code Online (Sandbox Code Playgroud)

c++ openmp

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