Tag: memory

如何分配16byte内存对齐数据

我试图在一段代码上实现SSE矢量化,我需要将我的1D数组与16字节内存对齐。 但是,我已经尝试了几种方法来分配16byte内存对齐数据,但它最终是4byte内存对齐。 我必须使用Intel icc编译器。 这是我正在测试的示例代码: #include #include void error(char *str) { printf(“Error:%s\n”,str); exit(-1); } int main() { int i; //float *A=NULL; float *A = (float*) memalign(16,20*sizeof(float)); //align // if (posix_memalign((void **)&A, 16, 20*sizeof(void*)) != 0) // error(“Cannot align”); for(i = 0; i < 20; i++) printf("&A[%d] = %p\n",i,&A[i]); free(A); return 0; } 这是我得到的输出: &A[0] = […]

对齐和未对齐的内存访问?

对齐和未对齐的内存访问有什么区别? 我在TMS320C64x DSP上工作,我想使用内部函数(汇编指令的C函数),它有 ushort & _amem2(void *ptr); ushort & _mem2(void *ptr); 其中_amem2执行2字节的对齐访问,而_mem2执行未对齐访问。 我什么时候应该使用哪个?

mmap问题,分配大量内存

我得到了一些我需要解析的大文件,人们一直在推荐mmap,因为这样可以避免必须在整个内存中分配整个文件。 但是看看’top’看起来我确实打开整个文件进入内存,所以我觉得我一定做错了。 ‘顶级秀> 2.1演出’ 这是一个代码片段,显示了我正在做的事情。 谢谢 #include #include #include #include #include #include #include #include #include #include int main (int argc, char *argv[] ) { struct stat sb; char *p,*q; //open filedescriptor int fd = open (argv[1], O_RDONLY); //initialize a stat for getting the filesize if (fstat (fd, &sb) == -1) { perror (“fstat”); return 1; […]

查询分配块大小的任何函数?

我意识到任何这样的function都可能是非标准的,但这对我的用例来说没问题。 基本上,我需要一个方法(即使它只通过glibc的syscall()接口公开)我可以传递一个指针(由前一个调用malloc()返回的指针)返回指针块的大小指向。 这样的事情存在吗?

如何将值存储在内存中的特定位置?

也许这是一个简单的问题,但我真的很想知道它。 如果我想在内存中的某个特定地址(堆中)存储一个值,比如一个int,我该怎么做? 说,我想将int值10存储在0x16。 我想通过调用new或malloc来做到这一点:int * p = new int(10); 然后我想将存储的值的地址设置为0x16。 起初我觉得像&p = 0x16这样的东西,但这不起作用。 我需要这样做以在内存中的某个值前面存储一些附加信息(之前通过malloc或new分配了内存空间)。 我正在使用Linux和C ++(但C也可以)。 我想要实现的是:一个进程调用大小为x的malloc,我想在分配的内存前面存储一个特定的值(大小),所以我可以稍后访问该大小(当调用free时)。 由于malloc被调用,我知道操作系统为该值分配空间的指针,我只想将指定内存的大小存储在指定内存前面的4个字节中。 我所做的(在我编写的malloc钩子中)是分配更多内存(通过内部mallok调用)但我还需要能够在特定位置存储此大小值。 我感谢所有的帮助。

在OS X中读取其他进程的内存?

我一直在努力了解如何阅读Mac OS X上其他进程的内存,但我没有太多运气。 我在网上看过很多使用ptrace和PEEKDATA等的例子,但它在BSD [ man ptrace ]上没有这个选项。 int pid = fork(); if (pid > 0) { // mess around with child-process’s memory } 如何在Mac OS X上读取和写入另一个进程的内存?