问题描述: 我在学习c语言,正在尝试用strtoul将字符串转换成unsigned long的形式,但是在程序编译成功后运行却回出现一下错误:
malloc: *** error for object 0x7ffee7e32c8f: pointer being freed was not allocated
malloc: *** set a breakpoint in malloc_error_break to debug
以下是我的代码:
#include <stdlib.h>
#include <stdio.h>
int main()
{
size_t size;
char *size_str = getenv("TEST");
if(size_str!=NULL){
size_t buf_size = strtoul(size_str, NULL, 0);
printf("%p\n", size_str);
printf("%s\n", size_str);
printf("%lu\n", buf_size);
free(size_str);
}
return 0;
}
出问题的代码是free(size_str);这里,如果我不加free的话,程序运行没有任何问题。
请问这是什么原因造成的呀?
谢谢