持之以恒
分类:
2009-05-24 10:50:39
void GetMemory(char *p) { p =
(char *)malloc(100); } void Test(void) { char
*str = NULL; GetMemory(str); strcpy(str,
"hello world"); printf(str); } 请问运行Test函数会有什么样的结果? 答:程序崩溃。 |
char *GetMemory(void) { char p[] = "hello world"; //if(char * p = "hello //world";)//what happend? return
p; } void Test(void) { char
*str = NULL; str
= GetMemory(); printf(str); } 请问运行Test函数会有什么样的结果? 答:可能是乱码。 因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原现的内容已经被清除,新内容不可知。 |
void GetMemory2(char **p, int num) { *p
= (char *)malloc(num); } void Test(void) { char *str =
NULL; GetMemory(&str,
100); strcpy(str,
"hello"); printf(str); } 请问运行Test函数会有什么样的结果? 答: (1)能够输出hello (2)内存泄漏 |
void Test(void) { char
*str = (char *) malloc(100); strcpy(str, “hello”); free(str); if(str != NULL) { strcpy(str, “world”); printf(str); } } 请问运行Test函数会有什么样的结果? 答:篡改动态内存区的内容,后果难以预料,非常危险。 |