【发布时间】:2021-04-25 03:36:10
【问题描述】:
我和动态记忆不是朋友。我总是对他们有问题。而且这个任务很容易理解。
任务:编写一个函数readText,从用户那里读取任意文本(由返回完成)并将其作为字符串返回。在这个函数的第一个版本中,假设文本不能超过某个长度(例如 1000 个字符)。阅读完文本后,应将内存缩短到所需的最小长度。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXC 5
char *readText(int*lengh);
int main()
{
char *str= malloc(MAXC*sizeof(char));
if(str == NULL) {
printf("Kein virtueller RAM mehr verfügbar ...\n");
return EXIT_FAILURE;
}
int length=0;
str=readText(&length);
printf("Text: %s %d %c\n",str,length,*str);
str= realloc(str,length+1);
if(str == NULL) {
printf("Kein virtueller RAM mehr verfügbar ...\n");
return EXIT_FAILURE;
}
printf("Text: %s\n",str);
free(str);
printf("free\n");
return 0;
}
char *readText(int*lengh){
char *result1;
char result[MAXC];
printf("Read Text: ");
scanf("%s",&result);
result1=result;
*lengh=strlen(result);
return result1;
}
结果(字符串的事情刚刚发生在不久之前,在我只是对 realloc 有问题之前):
Read Text: hoi
Text: h╠ ` 3 h
Kein virtueller RAM mehr verf³gbar ... (No virtual RAM available)
Process returned 1 (0x1)
我担心我的程序没问题,但我的内存不行。因此,如果是这种情况或一般情况,请告诉我如何解决 RAM 问题。会很棒 感谢您查看此内容并帮助我改进。
【问题讨论】:
标签: c null malloc dynamic-memory-allocation realloc