【发布时间】:2015-03-31 22:54:29
【问题描述】:
我正在编写一些代码,在本例中是一个查看一段字符串是否为空白的函数(例如,是否包含所有空格、制表符或换行符)。我似乎无法释放临时变量而不遇到错误。这是函数:
int isBlank(char *a){
char *temp;
int blank = 1;
int position = 0;
if( a == NULL){
return 1;
}
temp = malloc(sizeof(char)*strlen(a)+1);
strcpy(temp,a);
//printf("string: %s\n", temp);
while(*temp){
if(*temp != ' ' && *temp != '\t' && *temp != '\n'){
blank = 0;
break;
}
temp++;
}
free(temp);
return blank;
}
我正在遍历字符串并将它们与每个空格进行比较,但是当我释放 temp 时,它给了我一个 glibc 错误
*** glibc detected *** ./a.out: free(): invalid pointer: 0x000000000170e9f4 ***
======= Backtrace: =========
谁能帮助我解决这个问题或指出我在这里做错了什么? 谢谢
【问题讨论】: