Tag: 分配

如何动态分配16B对齐的2d数组

我想使用memalign和16B分配2D数组(方阵),而不是仅使用malloc 。 我有 A =(float **) malloc( (*dim) * sizeof(float*)); for ( i = 0 ; i < (*dim) ; i++) { A[i] = (float*) malloc(sizeof(float)*(*dim)); } 如何用memalign更改上面的代码。

malloc()/ free()的对齐限制

较早的K&R(第2版)和其他我读过的C语言文本讨论了malloc()和free()风格的动态内存分配器的实现,通常也提到了一些关于数据类型对齐限制的内容。 显然,某些计算机硬件体系结构(CPU,寄存器和内存访问)限制了如何存储和处理某些值类型。 例如,可能要求必须从4的倍数的地址开始存储4字节( long )整数。 主要平台(英特尔和AMD,SPARC,Alpha)对内存分配和内存访问有什么限制(如果有的话),还是可以安全地忽略在特定地址边界上对齐内存分配?

动态分配C结构?

我想动态分配一个C结构: typedef struct { short *offset; char *values; } swc; ‘offset’和’values’都应该是数组,但是它们的大小在运行时才会被识别。 如何为我的struct和struct的数组动态分配内存?

如何在C中编写线程安全,高效,无锁的内存分配器?

如何在C中编写线程安全,高效,无锁的内存分配器? 我的意思是: 快速分配和解除分配 最佳内存使用(最小浪费和无外部碎片) 最小的元数据开销

具有C语言function的realloc结构

我的C程序崩溃了,我太新了,无法弄明白。 到目前为止它非常简单,我想代码足以弄清楚出了什么问题。 我只是想逐行读取文件。 一旦我内存不足,我会将结构的内存加倍。 如果这还不够,我会提供您需要的任何其他信息。 非常感谢您的帮助,因为我已经被困了好几个小时了。 /* John Maynard 1000916794 7/15/2013 HW-06 */ #include #include #include #define N 100 struct course { char subject[11]; int catalogNum; int sectionNum; int enrollmentTotal; int enrollmentCap; }; void readFile(struct course *d, char* filename); void double_array_size(struct course *d, int new_size); int main(void) { char *filename = “hw06-data.csv”; struct course *d; […]

动态内存分配

我在为数组动态分配内存时遇到了麻烦。 我已经调试了几个小时,没有任何指针? 我发布了剩下的代码。 它应该简单地将交换第一行与第二行交换,第三行与第四行交换。 我得到了奇怪的结果,如: 输入字符串:hello 输入字符串:你好吗? 输入字符串:我很好,谢谢 输入字符串:再见 输入字符串:bai 输入字符串:xx ========================= 你好吗 !我很好谢谢 你好 !你好吗 再见 !白 我很好谢谢 !再见 白 !XX int count = 0; char *lines[MAX_LINES]; char *tmp[50]; printf(“Enter string: “); fgets(tmp, 50, stdin); lines[count] = (char *) malloc((strlen(tmp)+1) * sizeof(char)); strcpy(lines[count], tmp); while(strcmp(“xx\n”, lines[count])){ count++; printf(“Enter string: “); fgets(tmp, 50, stdin); lines[count] […]

结构元素的内存分配

嗨,我很难理解如何将内存分配给结构元素。 例如,如果我具有以下结构并且char的大小是1并且int分别是4个字节。 struct temp { char a; int b; }; 我知道结构的大小是8.因为在char之后将有3个字节的填充,并且下一个元素应该以4的倍数放置,因此大小将为8。 现在考虑以下结构。 struct temp { int a; // size is 4 double b; // size is 8 char c; // size is 4 double d; // size is 8 int e; // size is 4 }; 这是上述结构的o / pi size of node is 40 the […]

C随机枢轴快速排序(改进分区function)

我是一名计算机科学专业的学生(刚刚开始),我正在从伪代码编写Quicksort的随机枢轴版本。 我已经编写并测试了它,但这一切都完美无缺…… 分区部分看起来有点过于复杂,因为它感觉我已经错过了某些东西或者过分了。 我无法理解它是否正常或者我是否犯了一些可以避免的错误。 长话短说:它有效,但如何做得更好? 在此先感谢您的帮助 void partition(int a[],int start,int end) { srand (time(NULL)); int pivotpos = 3; //start + rand() % (end-start); int i = start; // index 1 int j = end; // index 2 int flag = 1; int pivot = a[pivotpos]; // sets the pivot’s value while(i<j && flag) // main […]

C中的内存池实现

我在C中寻找一个好的内存池实现。 它应该包括以下内容: 反碎片化。 超级快:) 能够在某个标识符下“捆绑”来自不同大小的多个分配,并删除具有给定标识符的所有分配。 线程安全

如何实现内存堆

不确定如何标题,但问题是: 我听说过程序员在程序开始时分配大部分连续内存,然后在必要时将其处理掉。 这与每次需要内存时简单地访问操作系统形成对比。 我听说这会更快,因为它可以避免不断向操作系统询问连续的内存块的成本。 我相信JVM就是这样做的,维护自己的内存部分,然后从中分配对象。 我的问题是,如何实际实现这一点? 谢谢,dragonwrenn