Tag: realloc

释放已分配的内存:realloc()与free()

所以我有一块内存分配了malloc() ,稍后用realloc()更改。 在我的代码中的某些时候我想要清空它,我的意思是基本上给它0的内存。用realloc(pointer,0)直观地做一些事情。 我在这里读到这是实现定义的,不应该使用。 我应该使用free() ,然后再做另一个malloc()吗?

当realloc移动内存块时如何更新其他指针?

realloc引用说: 该function可以将存储块移动到新位置,在这种情况下返回新位置。 这是否意味着如果我这样做: void foo() { void* ptr = malloc( 1024 ); unsigned char* cptr = ( unsigned char* )ptr+256; ptr = realloc( ptr, 4096 ); } 如果realloc移动块,cptr可能会变为无效? 如果是,那么以任何方式重新分配信号,它将移动块,以便我可以做一些事情来防止cptr变得无效?

realloc():重新分配时为下一个大小无效,为char *上的strcat腾出空间

我在以下代码上收到无效的内存错误: printf(” %s\n”,”FINE 5″); printf(“%s LENGTH IS: %d\n”,”FINE 6″,strlen(“: “)); buffer = (char *)realloc(buffer, strlen(buffer)* sizeof(char) + (strlen(“: “)+1)* sizeof(char)); printf(” %s\n”,”FINE 7″); strcat(buffer, “: \0”); 输出: 精细5 精细6长度是:2 *检测到glibc * ./auto:realloc():下一个大小无效:0x08cd72e0 *** ======= Backtrace:========= /lib/tls/i686/cmov/libc.so 0.6(+ 0x6b591)[0x6dd591] 这里需要注意的是Fine 7从未打印过。 每次运行时无效的下一个大小错误位于同一位置。 发现这种相关性

使用realloc缩小分配的内存

关于C中的realloc函数的简单问题:如果我使用realloc来缩小指针所指向的内存块,那么“额外”内存是否会被释放? 或者是否需要以某种方式手动释放? 例如,如果我这样做 int *myPointer = malloc(100*sizeof(int)); myPointer = realloc(myPointer,50*sizeof(int)); free(myPointer); 我会有内存泄漏吗?

使用realloc是否安全?

前段时间,我的一位朋友告诉我不要使用realloc,因为它不安全,但他不能告诉我为什么,所以我对这个问题做了一些研究,最接近我怀疑的是: https://buildsecurityin.us-cert.gov/bsi/articles/knowledge/coding/809-BSI.html http://www.iso-9899.info/wiki/Why_not_realloc 我想知道我是否可以继续在我的代码中使用realloc,或者它是否不安全是否还有其他方法来重新分配内存? 感谢您的关注。

正确使用realloc()

从man realloc:realloc()函数返回一个指向新分配的内存的指针,该内存适用于任何类型的变量, 可能与ptr不同,如果请求失败,则返回NULL。 所以在这段代码中: ptr = (int *) malloc(sizeof(int)); ptr1 = (int *) realloc(ptr, count * sizeof(int)); if(ptr1 == NULL){ //reallocated pointer ptr1 printf(“Exiting!!\n”); free(ptr); exit(0); }else{ free(ptr); //to deallocate the previous memory block pointed by ptr so as not to leave orphaned blocks of memory when ptr=ptr1 executes and ptr moves on to another […]

realloc和memcpy如何工作?

我有两个问题。 realloc()和memcpy()以比迭代每个元素O(N)更快的方式将数组中的条目复制到另一个中? 如果答案是肯定的,那么您认为它的复杂性是什么? 如果分配的大小小于原始大小, realloc()是否realloc()条目复制到其他位置,或者只是保留它们,因为它们会减小数组的大小?

如何在内存失败时处理realloc?

问题说明了这一切,但这里是一个例子: typedef struct mutable_t{ int count, max; void **data; } mutable_t; void pushMutable(mutable_t *m, void *object) { if(m->count == m->max){ m->max *= 2; m->data = realloc(m->data, m->max * sizeof(void*)); } // how to handle oom?? m->data[m->count++] = object; } 如何处理内存耗尽而不是所有数据的NULL? 编辑 – 让我们假设有一些事情可以做,例如在某处释放一些内存或者至少告诉用户“你不能那样做 – 你的内存不足”。 理想情况下,我想留下那里分配的东西。