小编Chr*_*ris的帖子

我可以指定堆的位置来序列化我的数据吗?

我想将程序状态存储在文件中.所以我有一个mmapped文件,我执行操作,然后保存它,以后可能会使用它.

这对于简单的事情来说很好,但如果我想要一个需要动态内存分配的长期数据结构,我需要一个内存分配器,我可以强制在我已映射的页面中分配.

我很确定我不能用标准的c malloc来做这件事,我看了jemalloc,我不知道我能不能看到任何东西.我不知道我是否采用了错误的方法,但有没有办法在使用之前指定堆的位置/大小?

c memory memory-management dynamic-memory-allocation

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

Math.Sqrt(X); 不工作?

我正在制作一个计算器,在尝试制作平方根函数时,它输出你输入的数字,而不是平方根.这是适用于平方根函数的代码.

SquareRoot = (Button)findViewById(R.id.SquareRoot);
        SquareRoot.setOnClickListener(new OnClickListener() {
             public void onClick(View v) {
                x = TextBox.getText();
                xconv = Double.parseDouble(x.toString());
                Math.sqrt(xconv);
                answer = Double.toString(xconv);
                TextBox.setText(answer);

        }});
Run Code Online (Sandbox Code Playgroud)

只是为了给出一些信息,x是CharSequence,xconv是x转换为double,而answer是一个字符串值.谢谢.

java math android sqrt

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

简单的分配如何导致分段错误?

我正在制作一个程序将文件拆分成lexemes但我不熟悉C而且我得到一个奇怪的分段错误.以下代码运行并打印:

1
2
Segmentation Fault: 11
Run Code Online (Sandbox Code Playgroud)

我查找了其他导致分段错误的原因,我在2之后没有对数组做任何事情.我做错了什么?简单的分配如何导致分段错误?

#include <stdio.h>

#define CHAR_CODE 1
#define NUM_CODE 2
#define RESERVED_CHAR_CODE 3
#define SPACE_CODE 4
#define ERR_CODE 5

char token[16];
char line[128];
int lineLen = 0;
int counter = 0;
FILE *file;

void cleanToken(){
    for(int i = 0 ; i < 16; i++){
        token[i] = 0;
    }
}

void cleanLine(){
    for(int i = 0 ; i < 128; i++){
        line[i] = 0;
    }
}

void next(){
    cleanToken();
    printf("1\n");
    char c;
    if(counter == lineLen){
        printf("2\n"); …
Run Code Online (Sandbox Code Playgroud)

c

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

ProjectEuler#15遇到问题

这是问题:https://projecteuler.net/problem=15

我想出了一个我认为适用于此的模式,我已经看过其他人做了什么,他们做了同样的事情,比如这里:http://code.jasonbhill.com/python/project-euler-problem-15 /但我总是得到一个不同的答案.这是我的代码.

import java.util.*;
public class Problem15 {
    public static void main(String[] args) {
        ArrayList<Long> list = new ArrayList<Long>();
        list.add((long)1);
        int size;
        for (int x = 1;x<20;x++){
            size = list.size();
            for(int y = 1;y<size;y++){
                    long sum = list.get(y-1)+list.get(y);
                    list.set(y, sum);
            }
        list.add(list.get(size-1)*2);
        System.out.println(list);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:回应爱德华,我认为我的方法目前是你在编辑之前所说的,这不是关于蛮力,而是我只是从网格中的每个点总结可能的方式.但是,我不需要二维数组来执行此操作,因为我只是从侧面查看可能的移动.这是我为了解释我的过程而编写的内容.我的方法

所以对于1x1.就像你说的那样,一旦你达到一个方向的极限,你只能在另一个方向的极限旅行,所以有两种方式.这对于1x1并不是特别有用,但对于较大的1x1则是如此​​.对于2x2,您知道作为右边界限的顶角只有1个可能的路径.同样的逻辑适用于底角.并且,因为你有一个已经解决过的方形,1x1,你知道中间点有2条路径.现在,如果你看两边,你会看到例如在它下面有2而在右边有1的点有这些相邻点中的路径数的总和,所以那个点必须有3个路径.对于另一侧,左上角的总和为3和3,或2倍3.

现在,如果您查看我的代码,那就是它正在尝试做的事情.索引为0的元素始终为1,对于数组的其余部分,它将前一个术语与其自身相加,并替换当前术语.最后,为了找到路径总数,它只是最后一个数字的两倍.因此,如果程序尝试解决4x4,则该阵列目前看起来像{1,4,10,20}.因此程序会将其更改为{1,5,10,20},然后{1,5,15,20},然后{1,5,15,35},最后添加路径总数{{ 1,5,15,35,70}.我认为这是你在答案中向我解释的内容,但我的答案总是错误的.

java math

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