【发布时间】:2020-05-04 01:34:10
【问题描述】:
有什么区别
char *key_str="kiwi";
和
char *key_str = strdup("kiwi");
例如:
int strCmp(void *vp1, void *vp2) {
char * s1 = (char *) vp1;
char * s2 = (char *) vp2;
return strcmp(s1, s2);
}
为什么那些*key_str 在函数strCmp() 中使用时表现不同?
【问题讨论】:
-
请更改字体类型:)
-
那是免费字体,
-
虽然您不应该发布代码图片,但您应该发布minimal reproducible example。问题在于您不显示的代码。
-
您在未显示的代码中执行的操作会导致未定义的行为,从而使您的整个程序出错。该问题与使用指向字符串文字的指针或指向动态分配的字符串的指针之间的区别无关。未定义的行为是未定义的,任何事情都可能发生(包括召唤nasal demons)。