Tag: realloc

动态添加到未知大小的char数组

我目前正在进行一项任务,我必须从每个文件中一次一个字符串提取文本,然后将它们连接起来并打印出来。 我找到了一种方法来提取我的角色并将其保存在变量广告中。 如何将这些char添加到我的char数组中以打印到最后? 我最初将它malloc到一个char的大小,并在每个if语句我realloc。 我在网上找到的所有指南都建议我使用strcat,但我无法传递广告变量来追加。 我该如何解决这个问题? #include #include #include #include #include pthread_mutex_t thread1; pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; char *output; void* processing(void* file) { FILE *test = fopen(“drive1.data”, “r”); FILE *drive1 = fopen(“drive1.data”, “r”); FILE *drive2 = fopen(“drive2.data”, “r”); FILE *drive3 = fopen(“drive3.data”, “r”); FILE *drive4 = fopen(“drive4.data”, “r”); FILE *drive5 = fopen(“drive5.data”, “r”); int c, […]

为什么克隆系统调用后realloc死锁?

我有一个问题,在clone()syscall之后的某个时候realloc()死锁。 我的代码是: #include #include #include #include #include #include #include #define CHILD_STACK_SIZE 4096*4 #define gettid() syscall(SYS_gettid) #define log(str) fprintf(stderr, “[pid:%d tid:%d] “str, getpid(),gettid()) int clone_func(void *arg){ int *ptr=(int*)malloc(10); int i; for (i=1; i<200000; i++) ptr = realloc(ptr, sizeof(int)*i); free(ptr); return 0; } int main(){ int flags = 0; flags = CLONE_VM; log("Program started.\n"); int *ptr=NULL; ptr […]

ARC&Malloc:EXEC_BAD_ACCESS

我一直在做一个项目已经有一段时间了,我决定跳到ARC。 我偶然发现了一些轰炸的代码,我想知道原因。 我已设法将其简化为此代码段: typedef __strong id MYID; int main(int argc, char *argv[]) { MYID *arr = (MYID *) malloc(sizeof(MYID) * 4); arr[0] = @”A”; // always get an EXEC_BAD ACCESS HERE arr[1] = @”Test”; arr[2] = @”Array”; arr[3] = @”For”; // uh oh, we need more memory MYID *tmpArray = (MYID *) realloc(arr, sizeof(MYID) * […]

替换realloc(C – > C ++)

在之前的一个问题中,我询问了类型转换指针,但是针对使用C ++分配系统而不是mallocs的更好解决方案。 (我正在将一些C代码转换为C ++) 但是,我仍然遇到类似function的问题: 我变了: tmp = malloc(sizeof(char*) * mtmp); –> tmp = new char*[mtmp]; 和 free(tmp) –> delete [] tmp; 但是,在以下函数中如何处理realloc: char* space_getRndPlanet (void) { int i,j; char **tmp; int ntmp; int mtmp; char *res; ntmp = 0; mtmp = CHUNK_SIZE; //tmp = malloc(sizeof(char*) * mtmp); <– replaced with line below tmp = […]

如果新块大小小于初始块,我应该强制执行realloc检查吗?

在这种情况下realloc会失败吗? int *a = NULL; a = calloc(100, sizeof(*a)); printf(“1.ptr: %d\n”, a); a = realloc(a, 50 * sizeof(*a)); printf(“2.ptr: %d\n”, a); if(a == NULL){ printf(“Is it possible?\n”); } return (0); } 我的输出是: 1.ptr: 4072560 2.ptr: 4072560 所以’a’指向相同的地址。 那么我应该强制执行realloc检查吗? 稍后编辑 : 在Windows XP下使用MinGW编译器。 这个行为与Linux上的gcc类似吗? 稍后编辑 2:检查这种方式可以吗? int *a = NULL, *b = NULL; a = calloc(100, […]

realloc里面的realloc

在C中,你可以在realloc里面重新分配吗? 例如,当你需要对它们两者进行malloc并重新分配它们时,结构中的结构。 如果是,有人可以提供一个简单的例子吗? 先感谢您。

`realloc`如何在后台实际工作?

realloc如何在后台实际工作? 如果在旧地方没有足够的可用内存,那么这个分配两个/多个内存块和一个指向该内存块的指针和其他指针在内部相互链接,或者旧区域被复制到新的位置,其中有足够的内存可用且指针正在更新到新地址并删除旧内存? 并且realloc是编译器/操作系统依赖还是独立 ?

结构中的数组和结构的Malloc

如何将malloc放在另一个struct中的struct? 我还想在结构中malloc一个项目数组,然后在需要时重新分配这个数组,这是如何正确完成的? 你能举个例子来说明一个结构,然后是上面的结构。 我有点不确定事情的顺序。 是否可以释放结构中的数组,然后是结构本身,在创建结构时是否必须对结构进行malloced,然后对其字段进行malloced /声明等等?

realloc失败的几率是多少?

当它耗尽类似于malloc的可用内存时,它是否会失败,还是有其他原因?

realloc但只有前几个字节才有意义

假设我使用过ptr = malloc(old_size); 使用old_size字节分配内存块。 只有第一个header_size字节才有意义。 我要将大小增加到new_size 。 new_size大于old_size , old_size大于header_size 。 之前: /- – – – – – – old_size – – – – – – – \ +===============+———————+ \-header_size-/ 后: /- – – – – – – – – – – – – – – new_size – – – – – – – – […]