malloc相关内容

为什么使用 alloca() 不被认为是好的做法?

alloca() 在堆栈上而不是在堆上分配内存,就像 malloc() 的情况一样.因此,当我从例程返回时,内存被释放.所以,实际上这解决了我释放动态分配内存的问题.释放通过 malloc() 分配的内存是一个令人头疼的问题,如果以某种方式错过会导致各种内存问题. 尽管具有上述特性,为什么不鼓励使用 alloca()? 解决方案 答案就在 man 页面(至少在 Linux): ..
发布时间:2021-11-27 08:08:12 其他开发

在 C 中分配一个二维数组,一维固定

我想动态分配二维数组的一维(另一个维已给出).这是否有效: int NCOLS = 20;//nrows = 用户输入...双 *arr[NCOLS];arr = (double *)malloc(sizeof(double)*nrows); 并释放它: 免费(arr) 解决方案 不完全——你声明的是一个指针数组.你想要一个指向数组的指针,它会像这样声明: double (*arr)[ ..
发布时间:2021-11-26 13:47:33 其他开发

如何在 c 中创建一个二维数组并使用指针和函数显示它?

我正在尝试编写 2 个函数,一个用于读取矩阵(二维数组),另一个用于打印出来.到目前为止,我有: /* 读取矩阵:分配空间,读取元素,返回指针.这行数和列数由两个参数给出.*/double **read_matrix(int rows, int cols){double **mat = (double **) malloc(sizeof(double *)*rows);国际我= 0;for(i= ..
发布时间:2021-11-26 13:42:32 其他开发

OSX 中的 64 位构建 - 不一致的 malloc 错误

我在 Xcode 中遇到一个非常不一致的错误: malloc: *** 对象 0x1041146f8 错误:已释放对象的校验和不正确 - 对象可能在被释放后被修改.*** 在 malloc_error_break 中设置断点进行调试 我知道这不是我的直接代码,因为 32 位构建工作得很好(体系结构设置为标准 32/64,仅构建活动体系结构设置为否).它偶尔也能正常工作,我什至不更改评论,但只有 ..
发布时间:2021-11-25 07:24:15 C#

64 位大型 malloc

malloc() 失败的原因是什么,尤其是在 64 位中? 我的具体问题是试图在 64 位系统上分配一个巨大的 10GB 内存块.这台机器有 12GB 的 RAM 和 32GB 的交换空间.是的,malloc 是极端的,但为什么会出现问题呢?这是在带有 Intel 和 MSFT 编译器的 Windows XP64 中.malloc 有时成功,有时不成功,大约 50%.8GB mallocs ..
发布时间:2021-11-25 05:03:35 C#

在 C 中将 malloc 的 2d 数组修改为 3d 数组的函数

我对 C 很陌生,这是我用它编写的第一个程序.我的教授给了我们一个为二维数组分配内存的函数,称为 malloc2d.我应该修改它来为 3d 数组分配内存,但我对 C 太陌生了,我不知道如何去做.我试过查看 3d 数组的其他 malloc 函数,但没有一个看起来与我得到的相似.同样,我们有一个 free2d 函数,它也需要针对 3d 数组进行修改.下面是需要修改的函数: void** malloc ..
发布时间:2021-11-25 04:43:47 C#

OSX 中的 64 位构建 - 不一致的 malloc 错误

我在 Xcode 中遇到一个非常不一致的错误: malloc: *** 对象 0x1041146f8 错误:已释放对象的校验和不正确 - 对象可能在被释放后被修改.*** 在 malloc_error_break 中设置断点进行调试 我知道这不是我的直接代码,因为 32 位构建工作得很好(体系结构设置为标准 32/64,仅构建活动体系结构设置为否).它偶尔也能正常工作,我什至不更改评论,但只有 ..
发布时间:2021-11-25 00:21:54 C#

在 C 中分配一个二维数组,一维固定

我想动态分配二维数组的一维(另一个维已给出).这是否有效: int NCOLS = 20;//nrows = 用户输入...双 *arr[NCOLS];arr = (double *)malloc(sizeof(double)*nrows); 并释放它: 免费(arr) 解决方案 不完全——你声明的是一个指针数组.你想要一个指向数组的指针,它会像这样声明: double (*arr)[ ..
发布时间:2021-11-24 21:37:03 C#

如何在 c 中创建一个二维数组并使用指针和函数显示它?

我正在尝试编写 2 个函数,一个用于读取矩阵(二维数组),另一个用于打印出来.到目前为止,我有: /* 读取矩阵:分配空间,读取元素,返回指针.这行数和列数由两个参数给出.*/double **read_matrix(int rows, int cols){double **mat = (double **) malloc(sizeof(double *)*rows);国际我= 0;for(i= ..
发布时间:2021-11-24 21:32:10 C#

char x[256] vs. char* = malloc(256*sizeof(char));

最近有人在我正在使用的一段代码中向我指出 char* name = malloc(256*sizeof(char));//更多代码免费(名称); 我的印象是这种设置数组的方式与使用 相同 字符名称[256]; 而且这两种方式都需要使用 free().我错了,如果有的话,请用低级术语解释一下有什么区别? 解决方案 在第一个代码中,内存是在堆上动态分配的.该内存需要使用 free() ..
发布时间:2021-11-18 05:04:31 其他开发

malloc 结构指针数组

我有以下结构: typedef struct _chess {int **数组;整数大小;struct _chess *parent;国际象棋; 我有: typedef struct _chess *Chess; 现在,我想创建一个动态长度数组来存储指向国际象棋结构的指针,因此我执行以下操作: 象棋数组 [] = malloc(size * sizeof(Chess)); 这给了我一个 ..
发布时间:2021-11-18 04:55:59 其他开发

C 中的动态数组——我对 malloc 和 realloc 的理解正确吗?

我正在学习如何在 C 中创建动态一维数组.下面的代码尝试执行以下操作: 使用 malloc,创建一个长度为 10 的动态数组,其中包含 double 类型的值. 将数组的每个条目设置为 j/100,因为 j = 0, 1,..., 9.然后打印出来. 使用 realloc 在数组末尾添加一个额外的空条目. 将新条目设置为 j/100 并再次打印出每个条目. 测试: doubl ..
发布时间:2021-11-18 04:50:08 其他开发

为什么这不会给出分段违规错误?

#include #include int noOfIntegers = 2;结构栈{int *s;国际顶级;} 英石;无效推(int项目){st.top++;st.s[top] = 项目;}int main() {st.s = malloc (2 * (sizeof(int)));st.top = -1;推(1);推(2);推(3);返回0;} 我不明白为什么这没有给出分段错误,因为我有 2 ..
发布时间:2021-11-18 04:41:54 其他开发

C : malloc 似乎分配的比我请求的还多(数组)

嗨,我有这个问题:为什么当我使用 malloc 为浮点数组分配内存时,它会分配更多我请求的空间?例如在这段代码中,我试图分配一个十个“单元格"浮点数组,但如果我尝试访问其他单元格,它不会返回任何段错误错误: #include #include #include 浮动 *fk_array;int main(int argc, char** argv){fk_array = (float *) ma ..
发布时间:2021-11-18 04:34:03 其他开发

什么时候在 C 中使用变长数组,但是什么时候动态分配呢?

我在 C99 中发现了可变长度数组,但看起来它的行为与 malloc + free 几乎相同. 我发现的实际差异: 处理太大的数组: 无符号大小 = 4000000000;int* ptr = malloc(size);//ptr 为 0,程序不会崩溃整数数组[大小];//段错误,程序崩溃 内存泄漏:仅在动态数组分配中可能发生: int* ptr = malloc(size);. ..
发布时间:2021-11-18 04:30:26 其他开发

结构体中的可变长度数组

我正在用 C 编写一个应用程序(作为初学者),我正在努力解决在包含可变长度数组的结构中获取损坏的数据的问题.我在 cprogramming.com 和 cert.og/secure-coding 上的论坛帖子中发现了类似的问题.我以为我找到了正确的解决方案,但似乎没有. 结构看起来像这样; typedef struct {一个;国际b;} 一对;类型定义结构{命令类型名称;双班;配对指令; ..
发布时间:2021-11-18 04:30:17 其他开发

C: 用 malloc 扩展数组

总的来说,我对 malloc 和 C 有点陌生.如果需要,我想知道如何使用 malloc 扩展其他固定大小的数组的大小. 示例: #define SIZE 1000结构体{一个;国际b;字符 c;};mystruct myarray[ 大小 ];int myarrayMaxSize = SIZE;....如果 ( i > myarrayMaxSize ){//malloc 另一个 SIZE ..
发布时间:2021-11-18 03:58:43 其他开发

Malloc 或普通数组定义?

我什么时候应该在 C 中使用 malloc 而不是普通的数组定义? 我无法理解两者之间的区别: int a[3]={1,2,3}int数组[sizeof(a)/sizeof(int)] 和: array=(int *)malloc(sizeof(int)*sizeof(a)); 解决方案 一般来说,在以下情况下使用malloc(): 数组太大,无法放入堆栈 数组的生命周期必 ..
发布时间:2021-11-18 03:43:38 其他开发