Android Studio3.0开发JNI流程------JNI开发遇到中stack corruption detected[Fatal signal 6 (SIGABRT)......debug]

在Android Studio 3.0开发JNI时,遇到因字符串操作导致的堆栈溢出问题。在Decryption_C()方法中,使用char *str等值时出现内存错误,改为使用char[]后问题解决。问题可能与strtok、strcpy、strcat等函数的指针操作相关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天开发写JNI中的加密与解密过程中遇到了一个奇怪的问题

stack corruption detected

意思是:堆栈溢出检测

代码如下:

void tttt(JNIEnv *env, jclass type) {

    LOGI("=========  字符串加解密--开始 =========");

    char *original_text = "我喜欢JNI - I Love JNI";  //原始文本

    char cipher_text[1024] = "";  //密文

    char decrypt_text[1024]="";  //解密文本

    LOGD("原文:  %s ", original_text);
    Encryption_C(original_text, cipher_text);  //加密过程
    LOGD("密文:  %s", cipher_text);
    Decryption_C(cipher_text, decrypt_text);   //解密过程
    LOGD("解密:  %s", decrypt_text);

    //printf("nihaoa");
    LOGD("--------测试密文转明文--------");
    LOGD("原文:我喜欢JNI - I Love JNI");
    char *str = "f799a2f6a7adf7bdb35b5f5a313e315a315d708776315b5f5a";

    LOGD("加密密文字符串: %s", str);
    char str_en[1024] = "";
    //解密过程...
    Decryption_C(str, str_en);
    LOGD("解密密文字符串: %s", str_en);

    LOGI("=========  字符串加解密--结束 =========");
}

bug崩溃图:
这里写图片描述

在这提示堆栈溢出,在调式过程中,我尝试着少写LOGD打印日志,发现有时候程序不会出现崩溃信息,加上一些log日志就会崩溃。
在网上各种找办法,都没有解决问题,我在试着写行log调式,发现在Decryption_C( )方法就会崩溃。经过多番摸索发现问题是,在字符串拼接(C++的字符串拼接函数)过程中,传入的参数的值时, 传入 char *str等值会出现报内存错误。经过将 char *original_textchar *str 改为char original_text[ ]char str[ ] 时程序就不会出现崩溃……

这个bug引起的原因可能与字符串操作有关,与strtok、strcpy、strcat等需要指针(*)等的函数有关……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值