#include <stdio.h>
#include "stdlib.h"
int main(int argc, const char * argv[])
{
int i,j;
char takimlar[4][8]= { "TAKIM A ","TAKIM B","TAKIM C","TAKIM D"};
char *var = malloc(sizeof(char)*1);
int sonuclar[4][4] = {
{0,3,4,2},
{1,2,3,1},
{2,3,2,3},
{0,2,1,4}
};
for (i=0; i<4; i++) {
if (sonuclar[i][2]>sonuclar[i][3]) {
var = realloc(var,8);
for (j=0; j<8; j++) {
var += takimlar[i][0];
}
}
else if(sonuclar[i][2]<sonuclar[i][3]){
var = realloc(var,8);
for (j=0; j<8; j++) {
var += takimlar[i][1];
}
}
}
printf("%s",var);
return 0;
}
我想在内存中为变量分配动态,然后我想使用Realloc函数分配更多内存。运行此程序时,我会收到此错误:
对象0x100100C17的错误:未分配realloc'd指针。 在malloc_error_break中设置一个断点
当我查看 malloc.c
文件时,我看到了这些行:
zone = find_registered_zone(old_ptr, &old_size);
if (!zone) {
malloc_printf("error for object %p: pointer being realloc'd was not allocated.n"
"set a breakpoint in malloc_error_break to debugn", old_ptr);
malloc_error_break();
我在做什么错?
此行正在递增指针var
:
var += takimlar[i][0];
在将var
传递给realloc()
时,循环的后续迭代不是realloc()
或malloc()
返回的值。它看起来好像代码正在尝试将char
附加到char*
,这不是如何实现此目标的方法。
var += takimlar[i][0];
var
是char*
,因此您将字符添加到地址。我不确定这是您想做的。然后,当您调用realloc
时,指针不再等于malloc
返回的地址。因此,您有一个运行时错误。