小编Ham*_*ani的帖子

奇怪的算术错误 - 255x256x256x256 = 18446744073692774400

我在c ++下编程时遇到了一件奇怪的事情.这是一个简单的乘法.

码:

unsigned __int64 a1 = 255*256*256*256;
unsigned __int64 a2= 255 << 24; // same as the above

cerr()<<"a1 is:"<<a1;
cerr()<<"a2 is:"<<a2;
Run Code Online (Sandbox Code Playgroud)

有趣的是结果是:

a1 is: 18446744073692774400 
a2 is: 18446744073692774400 
Run Code Online (Sandbox Code Playgroud)

而它应该是:(使用计算器确认)

4278190080
Run Code Online (Sandbox Code Playgroud)

谁能告诉我怎么可能呢?

c++ multiplication uint64

25
推荐指数
3
解决办法
2751
查看次数

创建包含外部(Native或Java)包的Android库包

我开发了一个计算机视觉算法的应用程序,它使用Native C++OpenCV来捕获相机帧并进行图像处理.我的整个实现驻留在一个通过活动调用的本机函数中.

让我们说:

public native int MYMETHOD(int width, int height,int[] rgba);
Run Code Online (Sandbox Code Playgroud)

我也像这样加载我的库:

static {
    System.loadLibrary("MYNativeLIB");
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是如何将我的应用程序部署为库包.我可以分享它的东西,客户可以将它导入到他们的项目而无需安装任何其他库OpenCV.我需要建立一个.so包吗?我读过这篇文章.但我不知道如何链接OpenCV库.感谢您的帮助.

android opencv native shared-libraries static-libraries

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

调试ARM程序集(Neon扩展)

我正在开发一种使用ARM Neon指令的算法.我正在使用汇编程序文件编写代码(.S并且没有内联asm).

我的问题是什么是调试目的的最佳方式,即查看寄存器,内存等.目前,我正在使用Android NDK编译和我的Android手机来运行算法.

debugging assembly arm android-ndk

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

高效的SSE NxN矩阵乘法

我正在尝试SSE通过矩阵乘法实现大矩阵的版本.我正在寻找一种基于SIMD实现的高效算法.

我想要的方法如下:

A(n x m) * B(m x k) = C(n x k)
Run Code Online (Sandbox Code Playgroud)

并且所有矩阵都被认为是16字节对齐的浮点数组.

我在网上搜索了一些描述8x8乘法甚至更小的文章.我真的需要它尽可能高效,我不想使用Eigen库或类似的库.(只是SSE3为了更具体).

所以,如果有人能帮我找到一些关于如何开始实现这个的文章或资源,我将不胜感激.

c++ assembly sse simd matrix-multiplication

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

C++快速有效地在40字节数组上执行bit_count和AND操作的方法

在我的项目中,我需要AND两个大小为40字节(320位)的二进制数组,然后在C++中计算设置位数.我找到了一些算法来做这个,但我想知道在c ++中实现它的最快方法是什么.我的意思是什么c ++数据类型是正确的?(unsinged char*,unsigned int 32,u_int64,...).我知道许多算法与32位整数兼容,尽管我的数组大小是40字节.

那个链接中描述的算法怎么样: 快速位计数技术哪个更快?

const类型更好还是没有区别?

任何帮助将非常感激.

c++ bit-manipulation bytearray bitcount

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

如何让vimrc修改生效

我使用我的 时遇到问题.vimrc。我在Linux Red hat下,无论我更改什么都~/.vimrc不会生效。为了使其反映出来,每次我打开 vim 文件(比如说hello.txt),我都需要源代码so:~/.vimrc来反映我的新更改。但我不想每次都进行采购。我想知道是否有一种方法可以一次性获取它并使所有新配置都有效。

我还应该注意,我没有 root 访问权限,我必须.vimrc第一次创建自己的访问权限。它不存在于我的$HOME目录中。

提前致谢。

更新:

>which vim
/usr/bin/vim
>ls -la ~/.vimrc
-rwxrwxrwx. 1 username ...
Run Code Online (Sandbox Code Playgroud)

我的系统范围 Vim 初始化:

/usr/share/vim/vimrc

我个人的 Vim 初始化

~/.vimrc

更新2

:scriptnames:

1: /etc/vimrc
 2: /usr/share/vim/vim72/syntax/syntax.vim
 3: /usr/share/vim/vim72/syntax/synload.vim
 4: /usr/share/vim/vim72/syntax/syncolor.vim
 5: /usr/share/vim/vim72/filetype.vim
 6: /usr/share/vim/vim72/ftplugin.vim
 7: /usr/share/vim/vim72/indent.vim
 8: /usr/share/vim/vim72/syntax/nosyntax.vim
 9: /usr/share/vim/vim72/plugin/filetype.vim
 10: /usr/share/vim/vim72/plugin/getscriptPlugin.vim
 11: /usr/share/vim/vim72/plugin/gzip.vim
 12: /usr/share/vim/vim72/plugin/matchparen.vim
 13: /usr/share/vim/vim72/plugin/netrwPlugin.vim
 14: /usr/share/vim/vim72/plugin/rrhelper.vim
 15: /usr/share/vim/vim72/plugin/spellfile.vim
 16: /usr/share/vim/vim72/plugin/tarPlugin.vim
 17: /usr/share/vim/vim72/plugin/tohtml.vim
 18: /usr/share/vim/vim72/plugin/vimballPlugin.vim …
Run Code Online (Sandbox Code Playgroud)

linux vim

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

分配包含stl向量的struct时内存泄漏

我想为包含的结构分配内存std::vector.分配后,我会给push_back它一些数据.毕竟,我需要销毁我分配的结构.我想知道如何在没有内存损坏的情况下完成任务.

这是我的代码:

typedef struct my_struct_t{

    int a, b;
    vector<unsigned> vec;

}
} MYSTRUCT;


int main(int argc, const char * argv[])
{

    MYSTRUCT* ptr_s =  new MYSTRUCT;

    for(int i = 0 ; i < 100 ; i++){
        ptr_s->vec.push_back(i);
    }
    ptr_s->vec.clear();
    delete ptr_s;

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

我试图使用,clear因为它应该调用析构函数.但是在valgrind我的代码之后,仍然有一些块可以访问.我还试图使用这个解除分配矢量:

vector<unsigned>().swap(ptr_s.vec)

但没有成功.

`valgrind'的输出:

==52635== HEAP SUMMARY:
==52635==     in use at exit: 10,360 bytes in 5 blocks
==52635==   total heap usage: 147 allocs, 142 frees, 25,198 bytes allocated …
Run Code Online (Sandbox Code Playgroud)

c++ struct memory-leaks stl vector

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