gpt4 book ai didi

c - mysql_init覆盖内存空间

转载 作者:行者123 更新时间:2023-11-30 18:35:03 26 4
gpt4 key购买 nike

当我打电话mysql_init(mysql);时,它覆盖 char大批。我不明白我做错了什么。我的代码:

void prepare_mysql(MYSQL *mysql) {
mysql_library_init(0, NULL, NULL);
mysql_init(mysql);
}

void get_uid(char *src, char *dst) {
int i, len, count = 0;
len = strlen(src);
for(i = 0; i != len; i++) {
if(src[i] == '-') { // iterate until a - sign is found
break;
}
dst[count] = src[i]; // save char into dst
count++;
}
dst[count] = '\0'; // add null char at the end of char array, otherwise everything will explode...
// dst is now: 389302
}

int main(int argc, char *argv[]) {
// argv[1] is for example: 389302-8232
char uid;
get_uid(argv[1], &uid);
printf("uid = %s\n", &uid); // prints: 389302 (correct)

MYSQL conn;
prepare_mysql(&conn);

printf("uid = %s\n", &uid); // prints: 3 (the first char only.. why?)

mysql_close(&conn);
mysql_library_end();
return 0;

}

如果我调用get_uid我调用 mysql_init 后的功能,我无法调用mysql_close(&conn)因为我得到了 Segmentation fault 。请帮忙,我无法理解..

编辑:我在 main 中添加了这个:

char *uid = malloc(strlen(argv[1]));

稍后在 main 中,我调用 free(uid); 。现在,在我调用 free 之前,它似乎在任何地方都可以正确打印。

最佳答案

您没有字符数组 - uid 只是一个字符。

关于c - mysql_init覆盖内存空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48525176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com