【发布时间】:2014-01-22 08:00:39
【问题描述】:
我问如何从 malloc/realloc 放入内存块的内存中读取值?
我有一个程序,它首先创建 2 个内存块并一直延伸到 32。它工作正常,但为了在 realloc 之后不丢失值,我使用一个名为 koru.Koru 的整数开始我的 scanf 会话。Koru 以 0 开头并且在每个 realloc 中,我将它的数量设为内存总量的一半,所以我希望不会丢失在 realloc 会话之前输入的值,但现在我需要读取我写的内存,所以我会确保我没有覆盖我怎么能这样做?
#include "stdio.h"
#include "stdlib.h"
int main()
{
int size=2;
int* p1;
int* p2;
int n;
p1=(int *)malloc((size*sizeof(int)));
int b=0;
int i=0;
int koru=0;
while(size<32)
{
if(i<size){
for(i=koru;i<size;i++)
{
printf("\nEnter value:");
scanf("%d",p1);
}
}
else if(boyut=i)
{
size=size*2;
p2 = (int*) realloc (p1,size*sizeof(int));
p1=p2;
koru=size/2;
printf("\nNOt enough size we make it %d also we protect %d that amount of memory"size,koru);
}
}
return 0;
}
我想放一个数组[i]=p1;并在while循环之后阅读它会解决问题,但后来我发现它的作弊我不是从内存块中读取,只是从另一个数组中读取,所以这也行不通,有人可以帮我带路吗?
我的程序做了什么:
2 块内存 malloc 取值并填充它 当它填充时,将内存大小乘以 2 realloc 从半数开始阅读,所以它不会重写 继续这个进度,直到达到 32
编辑:简化问题:
while 循环后我在内存中放了很多值,如何读取它们?
我试着这样读,但我得到的只是 0
int counter =0;
while (counter<koru)
{
printf("\n%d",p1[counter]);
counter++;
}
return 0;
}
使用 malloc 创建内存块并在 32 后使用 realloc 扩展它的正确代码退出 while 循环并从 p1 指针(从内存)写入所有内容,感谢您的帮助。
工作代码如下:
#include "stdio.h"
#include "stdlib.h"
int main()
{
int boyut=2;
int* p1;
int* p2;
int n;
p1=(int *)malloc((boyut*sizeof(int)));
int b=0;
int i=0;
int koru=0;
while(boyut<16)
{
if(i<boyut){
for(i=koru;i<boyut;i++){
printf("\nDeğer Girin:");
scanf("%d", &p1[i]);
}
}
else if(boyut=i)
{
boyut=boyut*2;
p2 = (int*) realloc (p1,boyut*sizeof(int));
p1=p2;
koru=boyut/2;
printf("\nBoyut yetersiz yeni boyutu %d yapıyoruz önceki %d kadar alanı korumaya aldık",boyut,koru);
}
}
int counter =0;
while (counter<koru)
{
printf("\n%d",p1[counter]);
counter++;
}
return 0;
}
【问题讨论】:
-
请格式化代码,这看起来很糟糕!
-
稍后我会将我的值转换为英语。
-
请检查新代码
标签: c memory memory-management