小编Kee*_*eto的帖子

GCC编译器并将const char*转换为char*

我正在尝试构建M-SIM架构模拟器,但是当我运行make实用程序时,gcc会报告此错误(它甚至不是警告)

注意:预期'char*'但参数类型为'const char*'

因为这被认为是一个错误.是否有任何标志可以绕过此检查?

c gcc build literals

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

使用python以xxx,yyy,zzz的形式读取整数字符串

是否有内置的简单方法将字符串转换为整数,字符串的格式为xxx,yyy,zzz?像325121565代替325121565.我知道我可以建立一个确实如此,但让我不会推倒重来我在想,如果别人已经做了功能.

python string integer

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

获取递归调用中函数的顺序号

在递归调用中检索函数顺序的最简单方法是什么.例如,如果我们有一个递归函数,它会一直调用自己,直到找到基本情况,然后一次返回一个函数.返回的第一个函数是0阶,第二个函数是1阶,依此类推......检索订单信息的简单方法是什么?比如说,当它是第三阶的功能时,我想做一些特别的事情.

编辑:我希望堆栈顶部的函数为零.

Edit2:我试图解决的问题是返回二叉树的顺序遍历的第n个元素.

java recursion

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

通过值将指针传递给c函数中的指针

fid_table是指向数组的fid_list指针.

我试图在一个单独的函数中初始化fid_tableNULLs.我的理解是fid_table是按值复制的,但它是一个指针,所以不应该是问题.

fid_list **fid_table;
fid_table_init(fid_table);
assert(fid_table[0] == NULL);
Run Code Online (Sandbox Code Playgroud)

该功能fid_table_init定义如下:

void fid_table_init(fid_list **fid_table){
    fid_table = (fid_list **) malloc(HTABLE_SIZE * sizeof(fid_list *));
    for(int i = 0; i < HTABLE_SIZE; i++){
        fid_table[i] = NULL;
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以详细说明为什么这个断言失败了吗?

c pointers function

3
推荐指数
2
解决办法
58
查看次数

Golang的bytes.Buffer线程安全性为一个作家/一个读者

我知道golang bytes.Buffer不是线程安全的,但如果我有一个作家(在goroutine中)和一个读者(在另一个goroutine中).安全吗?

如果没有,那为什么不呢?写操作从读取开始读取时附加到缓冲区,因此我没有看到它们将访问相同内存位置的情况.

io buffer go slice

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

rails活动记录遍历行

我正在使用.where()方法访问数据库表.这应该返回许多行.如何查看第一行或第二行.我知道我可以使用.each方法遍历所有行,但如果我只是想访问某一行会怎样.我是rails的新手,很抱歉这个简单的问题.

activerecord ruby-on-rails

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

UNIX缓冲与无缓冲I / O

无缓冲I / O和标准I / O有什么区别?我知道使用read(),write(),close()是无缓冲的IO。Printf和gets是缓冲的IO。我也知道,对于大事务,最好使用缓冲IO。我只是不知道为什么。在这种情况下,术语“缓冲”是什么意思?

unix io buffered

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

unix fork()理解

int main(){
    fork();
}
Run Code Online (Sandbox Code Playgroud)

我知道这是一个新手问题,但我的理解是,父进程现在将新的子进程分叉为父进程,这意味着子进程也应该分叉子进程等等...实际上,这个只生成一个子进程.我不明白孩子会执行什么代码?

unix linux fork

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

使用 mremap 重新分配内存

我正在尝试使用 malloc 分配两个不同的 4096 字节,并使用不同的值初始化这些分配。之后,我希望其中一个指针指向另一个分配,“不”更改 p1 的值并且“不”复制数据。我想将第二个分配“重新映射”到第一个分配,这基本上应该更改进程页表中的虚拟地址,即不涉及复制。当我运行此代码时,我发现 mremap 失败。知道如何实现这一点吗?

int main(){
    char *p1 = (char *)malloc(4096);
    memset(p1, 'a', 4096);
    char *p2 = (char *)malloc(4096);
    memset(p2, 'b', 4096);
    printf("p1 is %c at address %p\n", p1[0], p1);
    printf("p2 is %c at address &p\n", p2[0], p2);
    free(p1);
    /* remapping virtual addresses */
    void *p0 = mremap(p2, 4096, 4096, MREMAP_MAYMOVE | MREMAP_FIXED, p1);
    /* checking */
    printf("p0 is %c at address %p\n", p0[c], p0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

预期输出: p1 是地址 xxx 处的 a p2 …

c linux memory-management

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

出于可移植性的原因,在本地将 gems 安装到项目文件夹

我正在尝试容器化 Rails 项目。出于某种原因,我想要一个 Rails 项目,我可以将它复制并粘贴到另一台机器上,这样我就可以在另一台机器上运行它,而不必在另一台机器上运行“捆绑安装”。有没有办法在项目文件夹中安装所有依赖项,将项目文件夹部署到其他机器并直接从那里运行?

ruby gem ruby-on-rails-4

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

Golang变量赋值

有没有办法将两个变量分配给一个函数,当你声明一个变量而另一个没有时,返回两个值.

例如:

var host string
if host, err := func(); err != nil {}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,声明了host,但是没有声明err.除了宣布错误之外,我想要一个干净的方法来做到这一点

go

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

将 JSON 整数解组为空接口会导致错误的类型断言

我有这个代码。我希望接口的类型断言为 int。但是,接口的类型改为 float64。谁能解释为什么会这样?以及规避它的最佳方法是什么。

package main

import (
    "fmt"
    "encoding/json"
)

type obj struct {
    X interface{}
}

func main() {
    var x int
    x = 5
    o := &obj {
        X: x,
    }
    b, _ := json.Marshal(o)
    var newObj obj
    json.Unmarshal(b, &newObj)
    if _, ok := newObj.X.(int); ok {
        fmt.Println("X is an int")
    } else if _, ok := newObj.X.(float64); ok {
        fmt.Println("X is a float64")
    } else {
        fmt.Println("This does not make any sense")
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码打印“X 是一个 float64”。您可以在那里运行代码 …

go go-interface

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

为什么String对象在java中是不可变的?

通常情况下程序员想要操纵String对象.java中String对象的工作方式是每次操作String时都会创建一个新对象.这非常耗时.我知道有一个Stringbuffer类允许可变字符串,但我试图理解为什么Java建议字符串应该是不可变的?这是其他编程/脚本语言中的常见问题吗?

java string

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