malloc相关内容
出于学习目的,我在 c 中实现了一个堆栈及其函数.我添加了一些小的附加功能来第一次使用 malloc 并尝试正确理解它. 我写了一个函数,它最初是创建我的堆栈结构.该函数的返回值是一个已分配内存的新结构.在返回值应该是结构的函数中处理 malloc 异常的最佳方法是什么?也许我应该设计不同的功能?我知道 printf 没有做它的工作;) 我的堆栈结构: typedef 结构栈{整数计
..
我有一个非常大的数组,它的长度必须是 262144 个元素(将来可能会更大).我试过像这样在堆栈上分配数组: #define SIZE 262144int myArray[大小]; 但是,当我尝试添加超过某个点的元素时,当我尝试访问它们时,这些值似乎有所不同.我知道这是因为堆栈上只有有限数量的内存,而不是具有更多内存的堆. 我尝试了以下方法,但运气不佳(无法编译): #define S
..
我正在尝试迭代所有领域中的所有 malloc_chunk.(基于core文件调试,用于内存泄漏和内存损坏调查) 据我所知,每个竞技场都有 top_chunk,它基于 top_chunk 指向一个竞技场内的顶部块,其中有 prev_size 和 size,基于代码 (glibc/malloc/malloc.c):我可以得到之前的连续块,然后在一个竞技场中循环所有块.(我可以统计块的大小和数量,
..
我正在尝试调试 C 程序,而 gdb 告诉我某个函数的第 329 行存在段错误.因此,我为该函数设置了一个断点,并尝试逐步完成它.但是,每当我点击第 68 行时,我都会从 gdb 收到此投诉: (gdb) 步骤68 next_bb = (basic_block *)malloc(sizeof(basic_block));(gdb) 步骤*__GI___libc_malloc (bytes=40)
..
我很好奇在 malloc() 用于分配内存空间之后,指针究竟是什么?手册页告诉我 calloc() 将分配的内存空间初始化为零. malloc() 函数分配 size 字节并返回一个指向已分配内存的指针.内存未初始化.如果 size 为 0,则 malloc() 返回 NULL,或稍后可以成功传递给 free() 的唯一指针值. 和 calloc() 函数为每个大小字节的 nme
..
这是我正在使用的代码: #include #include int main() {诠释 *arr;int sz = 100000;arr = (int *)malloc(sz * sizeof(int));诠释我;对于 (i = 0; i
..
考虑以下行: char *p = malloc( sizeof(char) * ( len + 1 ) ); 为什么要使用 sizeof(char)?这没有必要,不是吗?还是只是风格问题? 它有什么优势? 解决方案 是的,这是风格问题,因为您希望 sizeof(char) 始终为一. 另一方面,在执行 malloc 时使用 sizeof(foo) 是一种习惯用法,最重要的是
..
我特别关注何时在 char 指针上使用 malloc char *ptr;ptr = "某事";...代码......代码...ptr = "别的东西"; malloc 会为了这样微不足道的事情而存在吗?如果是,为什么?如果没有,那么什么时候需要 char 指针? 解决方案 正如其他人所指出的,您不需要使用 malloc 来做: const char *foo = "bar"; 原
..
如果以下任何一项是正确的并且被认为是创建能够容纳 100 个字符的 char 字符串的最佳做法,那么哪一项是正确的? char * charStringA = malloc(100);char * charStringB = malloc(sizeof(char)*100);char * charStringC = (char*)malloc(100);char * charStringD =
..
我一直在为我的电磁仿真课程编写一段代码,但遇到了问题.我决定做一些额外的事情,将原始计算扩展到多达 10^8 个元素的非常大的网格,所以现在我必须使用 malloc(). 到目前为止,一切都很好,但是由于我更喜欢将代码保存在库中,然后使用编译器的 inline 选项进行编译,因此我需要一种在函数之间传递信息的方法.所以,我开始使用结构来跟踪网格的参数,以及指向信息数组的指针.我通过以下方
..
我正在尝试让我的代码从内容涉及的文本文件中读取:(文本文件名为maze1.txt) 5 5%%%%%% %% % %% E%%%%% 但是,每当我尝试运行程序时,我都会收到 分段错误,我认为这与我使用 malloc 的方式有关.我知道我已经使用第一个数字来为我的数组设置边界,但我不确定如何做到这一点. 提供的是我的代码: #include #include
..
搜索了大约一小时.我想我最好在这里发布问题. 我简化了代码.段错误在函数 initMyStruct 中. #include "stdlib.h"类型定义结构{int * arr1;int * arr2;} 我的结构;无效 allocMyStruct (myStruct * a, int num) {a = malloc(sizeof(myStruct));a->arr1 = malloc(
..
我是 C 和学习结构的新手.我正在尝试 malloc 一个大小为 30 的 char 指针,但它给出了分段错误(核心转储).我在互联网上搜索了它&所以但我无法解决这个问题.任何帮助将不胜感激. 可能我错误地访问了结构的 char* 成员? typedef 结构{诠释 x;整数y;字符 *f;字符 *l;}str;无效 create_mall();void create_mall()//Mall
..
我对 c 很陌生,现在我也很沮丧.这是我的代码: typedef 结构 {字符* fName;字符* lName;字符* pNum;char* 地址;char* 电子邮件;} 联系人信息;无效添加联系人(){联系方式 *联系方式;联系人 = (contactInfo *) malloc (sizeof(contactInfo));printf("\n[添加联系人]\n名字:");scanf("%
..
我的程序中有一个奇怪的错误,在我看来 malloc() 导致了 SIGSEGV,据我所知,这没有任何意义.我正在为动态列表使用一个名为 simclist 的库. 这是一个稍后引用的结构: typedef 结构 {整数 msgstr;整数状态;无效* udata;list_t 队列;} msg_t; 这里是代码: msg_t* msg = (msg_t*) malloc( sizeof(
..
我正在将一个 C 项目从 Linux 移植到 Windows.在 Linux 上它是完全稳定的.在 Windows 上,它大部分时间都运行良好,但有时我会遇到分段错误. 我正在使用 Microsoft Visual Studio 2010 进行编译和调试,看起来有时我的 malloc 调用根本不分配内存,返回 NULL.机器有空闲内存;它已经通过该代码一千次了,但它仍然发生在不同的位置.
..
您好,我有这个问题:为什么当我使用 malloc 为浮点数组分配内存时,它会分配我请求的更多空间?例如,在这段代码中,我试图分配一个十个“单元"浮点数组,但是如果我尝试访问其他单元,它不会返回任何段错误: #include #include #include 浮动 *fk_array;int main(int argc, char** a
..
这是发生分段错误的一段代码(未调用 perror): job = malloc(sizeof(task_t));如果(工作 == NULL)perror("malloc"); 更准确地说,gdb 表示 segfault 发生在 __int_malloc 调用中,这是由 malloc 进行的子例程调用. 由于 malloc 函数是与其他线程并行调用的,最初我认为这可能是问题所在.我使用的是
..
我继承了大量遗留代码.到目前为止,它一直运行良好.突然在我无法在内部重现的客户试用中,它在 malloc 中崩溃.我认为我需要添加工具,例如在 malloc 之上我有自己的 malloc 来存储有关每个 malloc 的一些元信息,例如谁进行了 malloc 调用.当它崩溃时,我可以查找元信息并查看发生了什么.几年前我做过类似的事情,但现在想不起来了……我相信人们已经想出了更好的主意.很高兴有意见
..
我的 iOS 应用程序有一个大问题:它有时会在没有详细调试错误的情况下崩溃.堆栈跟踪为空.这些是堆栈跟踪中仅有的两行: 在 UIApplicationMain 中的“symbol stub for: -[_UIHostedTextServiceSessiondismissTextServiceAnimated:]"处开始崩溃. 并报告“libsystem_c.dylib`malloc_er
..