小编kes*_*ari的帖子

在中断处理期间禁用了中断

为什么当内核当前正在处理中断时禁用中断?

如果错过了携带重要信息的中断怎么办?

operating-system interrupt interrupt-handling

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

sizeof与string的行为

?#?include? <stdio.h>
#include <string.h>
int main()
{
    printf("%d\n",sizeof("S\065AB"));
    printf("%d\n",sizeof("S65AB"));
    printf("%d\n",sizeof("S\065\0AB"));
    printf("%d\n",sizeof("S\06\05\0AB"));
    printf("%d\n",sizeof("S6\05AB"));
    printf("%d\n",sizeof("\0S65AB"));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

5
6
6
7
6
7
Run Code Online (Sandbox Code Playgroud)

http://ideone.com/kw23IV

任何人都可以用字符串解释这种行为吗?

在Debian 7.4上使用GCC

c string sizeof

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

链接器是否更喜欢 .so 文件而不是 .a 文件?

我正在使用包含 libLLVM*.so 文件和相应的 libLLVM*.a 文件的本地 LLVM 构建构建 Julia。这是首先用 构建的BUILD_SHARED_LIBS=ON,它负责 libLLVM*.so 文件的存在。

julia可执行文件使用的库 libjulia.so始终链接到 libLLVM*.so文件,即使我使用BUILD_SHARED_LIBS=OFF(默认配置)重建 LLVM也是如此。llvm-config --libs $LIB有和没有的输出BUILD_SHARED_LIBS=ON变化不大,似乎没有任何迹象llvm-config表明会发布链接选项,引导链接器链接 *.so 文件或 *.a 文件。

为什么会这样?即使存在同名的 .a 文件,使用 .so 文件也是链接器的默认行为吗?或者,是否有 Julia 重用的构建配置缓存?

linker llvm ld julia

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

使用getc从文件中读取并使用putc进行打印

我正在尝试从文件中读取每个字符,然后单独使用getc和putc将其打印到屏幕上.这是我的代码,

FILE *fp = fopen("new.txt","r+");
rewind(fp);
while( feof(fp) == 0 )
{
      putc( getc(fp) , stdout);
}
Run Code Online (Sandbox Code Playgroud)

当我执行此操作时,它会遇到无限循环.我无法理解当文件只有几行时会发生这种情况.

新手.

c file-io file getc

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

使用g ++ .cpp文件编译gcc .o文件

我有两个文件,print_permu.cgen_permu.cpp.我希望将print_permu.c文件编译成目标文件,然后使用目标文件进行编译gen_permu.cpp,其中包含对函数的调用print_permu.c.

print_permu.c

#include<stdlib.h>
#include<stdio.h>

typedef char byte;

char *printable=NULL;
size_t pos,size,*char_cnt;

void __print_permu_recurse()
{
        if( pos==size )
        {
                printf("%s\n",printable);
                return;
        }
        byte iter = 25;
        while( iter>=0 )
        {
                if( char_cnt[iter] )
                {
                        printable[pos] = 'a'+iter;
                        --char_cnt[iter];
                        ++pos;
                        __print_permu_recurse();
                        --pos;
                        ++char_cnt[iter];
                }
                --iter;
        }
}

void print_permu(size_t *char_count)
{
        char_cnt = char_count;
        for(pos = 0,size = 0 ; pos<26 ; ++pos)
                size += char_count[pos];

        printable = (char*)malloc(sizeof(char)*(size+1));
        printable[size] = '\0'; …
Run Code Online (Sandbox Code Playgroud)

c c++ gcc g++ object-files

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

使用JAVA Iterator

我正在尝试使用"Iterator".remove删除此ArrayList中具有偶数索引号的字符串.

    import java.util.*;
import static java.lang.System.out;

class MAIN
{
    public static void main(String args[])
    {
        ArrayList<String> al = new ArrayList<String>();
        Iterator i = al.iterator();
        int len;
        Scanner sc = new Scanner(System.in);
        out.printf("Size:");
        len = sc.nextInt();

        while( len!=0 )
        {
            al.add( sc.next() );
            len -= 1;
        }

        Object o;
        for( len = 0 ; len < al.size() ; len +=1)
        {
            out.println(al);
            if( len%2==0 )
            {
                o = i.next();
                out.println(o);
                i.remove();
                i.next();
            }
        }


        return;
    }

}
Run Code Online (Sandbox Code Playgroud)

我在i.next();得到了"ConcurrentModificationException".怎么了 ?

java iterator arraylist

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

__threadfence 暗示了 __syncthreads 的效果吗?

我正在 CUDA 中实现并行缩减。

内核等待__syncthreads所有线程完成对共享内存的 2 次读取,然后将总和写回共享内存。

我应该使用 a__threadfence_block来确保下一次迭代的所有线程都可以看到对共享内存的写入,还是__syncthreads按照NVIDIA 示例中给出的方式使用?

parallel-processing synchronization cuda reduction

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