美文网首页
Android jni 结构体赋值失败,c结构体指针初始化

Android jni 结构体赋值失败,c结构体指针初始化

作者: 椰子 | 来源:发表于2020-08-22 00:24 被阅读0次

    c结构体如下:

    typedef struct Student
    {
        char name[20]; 
        char telNumber[12];
        char description[64];
        char *faceBase64;  //人脸图片的base64编码
    } param;
    

    在使用该结构体时,除了要注意对结构体的内存分配,

    也不能忘了给结构体内的指针进行初始化并分配内存空间!!!

    使用代码如下:

        char *_name= jstring2Char(env, name);
        char *_telNumber= jstring2Char(env, telNumber);
        char *_description= jstring2Char(env, description);
        char *_face_base64_path = jstring2Char(env, face_base64_path);
        char* _faceBase64 ={ 读文件...} //从文件读取到base64的数据
    
        param param_8018;
        memset(&param_8018, 0x00, sizeof(param));
        memcpy(param_8018.name, _name, strlen(_name));
        memcpy(param_8018.telNumber, _telNumber, strlen(_telNumber));
        memcpy(param_8018.description, _description, strlen(_description));
        //给结构体指针初始化并分配内存空间
        param_8018.faceBase64 = (char *) malloc(sizeof(char) * strlen(_faceBase64)); //strlen(_faceBase64)计算可放的字节数
        strcpy(param_8018.faceBase64, _faceBase64);
          ...
          ...
        if (_faceBase64) {
            free(_faceBase64);
        }
    

    参考:https://www.cnblogs.com/losesea/archive/2012/11/15/2772526.html

    相关文章

      网友评论

          本文标题:Android jni 结构体赋值失败,c结构体指针初始化

          本文链接:https://www.haomeiwen.com/subject/tdyyjktx.html