首页 文章
  • 0 votes
     answers
     views

    动态分配2维数组

    有谁知道第三行“Free(array)”的作用是什么?这里的数组只是数组第一个元素的地址(换句话说,指向int * right数组中第一个元素的指针)?为什么我们需要第三行来释放2D数组的“列”?我基本上记住/理解a是一个指针,意味着保存____的地址 . 这句话是否正确? 例如:int ** a; int * b; int c; b =&c = 4; a =&b;这是对的吗?谢谢!!! 另外,一...
  • 0 votes
     answers
     views

    为2d数组分配内存c

    我一直在阅读很多关于分配内存的帖子,我认为我理解这个概念,但我被告知我必须使用看起来像这样的方法: double ** malloc_array2d(size_t m, size_t n) { double **A; size_t i; A = malloc(m * sizeof(double *)); if (A == NULL) ...
  • 0 votes
     answers
     views

    在C中使用malloc分配动态内存

    我'm new to C and have been trying to tackle this question. It'是the last thread I made的延续 . 我取得了一些进展,但仍然需要学习和修复 . 简而言之: 在这个问题中,“向量”是整数的一维数组 . 因此,矢量数组将是一个二维数组,其中包含一维数组 . 我需要使用这些变量: int ** vectors - ...
  • 11 votes
     answers
     views

    内存碎片

    当我随机地嵌套并使用不同大小的 malloc() 和_2440188时,在某些时候内存将被分段,因为这些操作会留下大量的小内存区域,这些内存区域是非连续的,因此不能分配为一个更大的一块 . 关于这个的一些问题: 当经常这样做以便内存被强制分段然后所有这些内存区域都是 free() d时,我可以假设这些空闲区域连接回原来的连续大小吗? 当我总是为相同的内存执行 malloc() 后跟 fr...
  • 40 votes
     answers
     views

    malloc可以分配的最大内存

    我试图在我的机器(1 Gb RAM 160 Gb HD Windows平台)上计算出最大程度上可以使用多少内存 . 我读到malloc可以分配的最大内存仅限于物理内存(堆上) . 此外,当程序超过内存消耗到某个级别时,计算机将停止工作,因为其他应用程序无法获得所需的足够内存 . 所以要确认一下,我在C写了一个小程序: int main(){ int *p; while(1){ ...
  • 0 votes
     answers
     views

    调用malloc()会覆盖静态表

    我正在使用STM32F4微控制器内的ARM Cortex M4F(M3),没有操作系统 . 语言是纯粹的C. 我遇到malloc()函数的问题 . 下面的代码使用从SD卡读取的全局和易失性数据表(volatile unsigned char [] fat_sector_buffer) . 在函数中,我声明了指针内存(用于从表中读取数据的结构类型作为结构),并将内存分配为从RTC保存日期和时间的第二...
  • 2 votes
     answers
     views

    为什么可能用-march = native编译“没有分配指针被释放”?

    我开发了一个TensorFlow定制操作的小型库 . 这些操作在C中编程并使用Eigen . 当我使用 -march=native 编译器选项编译自定义ops模块时,会发生奇怪的事情 . 生成的模块将始终以libsystem_malloc.dylib中源自free()的"pointer being freed was not allocated"错误中止 . 如果我在没有 -m...
  • 2 votes
     answers
     views

    (动态内存分配)为什么最大化峰值利用率?

    我正在读一本教科书说: 我完全迷失了,让我们说: n = 10 和 p (required payload) = 800 个字节, 这是否意味着在 n = 9 这是第9个分配请求,P9需要是792个字节(假设一个最小分配是8个字节)?我的理解是否正确?
  • 2 votes
     answers
     views

    C动态结构(malloc和free)

    我正在尝试学习C,C编程的基础知识,所以我从“C”开始 . 我有很多使用Java和VB编程的经验 . 但“C”是我想学的东西 . 所以我遇到了一个问题,试图理解“malloc”和“free”函数 . 我在Windows 98上使用Borland C 4.5和Visual C 6.0 . - (只是一个测试环境,想学习非常基础和早期的Windows编程) . 请参阅此代码: struct Stri...
  • 1 votes
     answers
     views

    内存分配释放

    我正在编写链接列表,并在删除节点时尝试释放内存分配 . 但是,经过几个小时的尝试,我似乎无法获得干净的valgrind输出 . void * pop(struct List *list) { if(list->head == 0){ return 0; } struct Node * tempNode = list->head->next...
  • 0 votes
     answers
     views

    将内存分配给struct-nodes

    我很好奇关于用c语言创建结构节点的一个问题 它是关于struct-objects的分配内存 . 我做了以下简单的代码,打印字母"h"和"e",我为第一个结构和第二个结构对象分配了内存 . 试验我删除(发表评论)otf第一个malloc即( ptrList = malloc(sizeof(list)); ) 实际上 - 没有崩溃 - 它仍然有效,这是我的问题 ...
  • 0 votes
     answers
     views

    在C中使用Free()时的运行时错误

    我正在尝试在C中使用结构的链接列表,其中一个结构表示列表,另一个结构表示列表的成员 . 这是他们的定义: typedef struct symEntry symEntry; struct symEntry{ const char * key; const void * value; struct symEntry * next; struct symEntry *...
  • 1 votes
     answers
     views

    释放分配的内存

    gcc 4.4.5 c89 我有一个名为create_object的函数,我为全局结构分配内存 . 我有一个名为destroy_object的函数,我检查指针是否为空,然后我自由 . 只是因为我释放了尚未分配的内存 . 但是,我通过连续两次调用destroy_object来测试它 . 但是,我在第二次调用时获得了堆栈转储 . 但是,我确信它不会释放,因为我已将指针指定为NULL . 所以应该跳过免...
  • 0 votes
     answers
     views

    如何在C中合并两段内存?

    我应该使用链表实现硬编码malloc和free,其中链表包含免费的节点 . 1.如果正在释放某些东西,我必须用内存检查左右位置,如果它们是空闲的,则将它们合并在一起 . 但是,在以下调用之后,我遇到以下问题 . 注意我们malloc超过x字节b / c它是x sizeof(struct Node) Original Linked List: [2048] Call: ...
  • 3 votes
     answers
     views

    在malloc和calloc之间分配连续的内存

    我读了很多关于malloc和calloc的链接,但我仍然对“在malloc和calloc之间分配连续内存之间”感到困惑 . 在某些链接中,他们给malloc分配连续内存作为字节块但是在某些链接中,他们给出了calloc为元素数组分配连续内存 . 请给我清楚的想法 .
  • 0 votes
     answers
     views

    你应该什么时候将指针的大小与结构本身的大小相关联?

    我无法理解指针的malloc大小何时与结构的大小相关 . 例如: 我有一个结构: typedef struct { char *String; int Length; } WORD; 我想使用指针创建一个指向WORD数组的指针: WORD **WordArray; WordArray = malloc(sizeof(WORD*)) //Since WordArray is...
  • 1 votes
     answers
     views

    将内存分配给包含结构的节点

    所以说我有一个来自双向链表的节点 typedef struct node { struct node *pPrev; struct node *pNext; struct record *data; }Node; 和以下结构命名记录,在该命名的songlength中有一个struct typedef struct record { char *artist; char *albu...
  • 3 votes
     answers
     views

    EXC_BAD_ACCESS调用malloc函数时

    我有以下功能,但有时它在malloc函数调用失败,我不知道原因,我认为这可能是由于缺少堆大小但我已经监控堆,我知道我有足够的空间可用对于malloc失败时的内存分配,任何人都可以向我提出任何建议 char *substr(const char *pstr, int start, int numchars) { char *pnew; pnew=malloc(numchars+1); //th...
  • 0 votes
     answers
     views

    malloc内存分配

    我有一个初学者问题,我需要传递指向函数的指针,然后为此指针分配dinamic内存 . 我在main函数中创建指针,然后将其传递给应该分配内存的特定函数 . 但我收到此错误:“hist_array可能在此函数中未初始化使用” 这是该计划的相关内容:来自主要: int* hist_array; fillHistogram(first_image,hist_array,max_value+1);...
  • 3 votes
     answers
     views

    在C中的结构中,是否需要malloc空间用于函数指针?

    例如,我必须在函数中使用以下参数创建结构:一个函数指针,格式为:void(* func)(void *)和一个int id . 要创建的结构如下: typedef struct example { int id; void (*func)(void *); } Example; 现在我的问题是当我为整个结构我的malloc空间时,我是否也为void函数指针的malloc空间,因为...
  • 1 votes
     answers
     views

    C指针分配指针

    我的代码有效,但我不太明白为什么 . 我正在分配一个带字符串的指针,将该字符串传递给一个函数,然后对其进行修改 . 我很困惑,即使输入的字符串远远大于原始字符串,它似乎运行正常 . 我希望它抱怨覆盖内存,特别是因为原始指针不是MALLOC / CALLOCed . void changeArray(char *(*anArray)[3]); 功能声明 char *testArray[] = { ...
  • 2 votes
     answers
     views

    K&R哈希函数

    以下代码的一部分是K&R的简单哈希查找算法的实现 . lookup在表中搜索s,并返回指向找到它的位置的指针,如果不存在,则返回NULL: struct hashElement *lookup(char *name){ struct hashElement *currentStruct; int cmp; for (currentStruct = hashTable[ca...
  • 1 votes
     answers
     views

    查找malloc函数指定的大小[重复]

    可能重复:查询已分配块大小的任何函数?仅使用返回的指针获取malloc的大小 让我们说我让用户使用malloc函数指定要传递给int * x的字节数 . 有没有办法确定分配给整数的实际字节数?
  • 12 votes
     answers
     views

    在函数返回后,函数中分配的内存是否仍然保持分配状态?

    对于以下代码: (1) "main"调用函数"f1" . (2) 函数"f1"做了一些数字处理;使用malloc创建一个"char"数组,然后将数组的指针返回给main(不分配-freeing-数组) . 我有3个与案例有关的问题: (1) 我假设,虽然函数"f1"已经终止,但分配的char数...
  • 0 votes
     answers
     views

    从结构中的2D数组中自由动态分配的内存

    我有一个指向结构的指针,结构中的一个对象是一个int ** . 双指针用于为2d数组动态分配内存 . 我无法弄清楚如何释放这个数组的内存 . 有任何想法吗? struct time_data { int *week; int *sec; int **date; }; typedef struct time_data time_data; time_data *getTim...
  • 7 votes
     answers
     views

    calloc()比malloc()&memset()慢

    我想问你一个问题 . 我有以下代码: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define XXX 1024*1024 int main() { int *p; unsigned long x=0; while (1) ...
  • 0 votes
     answers
     views

    访问在循环内使用malloc创建的变量比本地声明的变量更快吗?

    我有一个循环中的应用程序并使用一个变量 . 基本上它只是将一个字符串复制到变量处理它然后移动到下一个字符串 . 我想知道如何声明我需要使用的变量,所以我编写了这段代码来测试哪一个会更快 . 有趣的是,malloc比我在本地声明的变量更快 . 我也扔了calloc并且它的速度较慢,因为它可能将内存归零 . #include <stdio.h> #include <stdlib.h&...
  • 1 votes
     answers
     views

    在viewDidLoad中使用malloc分配的iOS数组

    在 viewDidLoad 中完成时,动态内存分配存在问题,例如数组的 malloc 或 calloc . 使用 NSMutableData 替换malloc时出现同样的问题here . 我不需要解决方案,因为我将提出自己的解决方案,但欢迎讨论,以便更深入地了解iOS内存管理 . 我的代码包含以下部分: 在类扩展中,我定义了指针 @interface MyFirstViewController ...
  • 1 votes
     answers
     views

    C将指针传递给指向函数的指针并使用malloc

    我试图获得std输入来扫描x行(x <100)和y列(y <1,000,000)的两个2d并行数组(arrAtk,arrDef) . 但y是每行中的可变长度 . 输入的第一行是x,表示每个数组中的行数 . 第二行是y表示第一行中的列数 . 接下来是y整数被读入arrAtk数组 . 然后另一个y整数被读入arrDef数组 . 直接跟随是下一行中列数的int y . 等等 . 并行数组将保...
  • -1 votes
     answers
     views

    对二维数组进行Mallocing,在尝试打印字符串后崩溃

    我想要一个动态的字符串数组,所以指向数组的指针 . 这是我的代码(我的程序在打印后崩溃): typedef struct person{ char *name; char **children; struct person *nextPerson; }Person; int main( ){ int kidsNum = 1; int i; Per...

热门问题