Android 使用NDK开发中,遇到memset,memcpy, malloc函数错误
生活随笔
收集整理的這篇文章主要介紹了
Android 使用NDK开发中,遇到memset,memcpy, malloc函数错误
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
遇到在使用NDK進行底層開發的時候,會遇到一些奇怪的問題,如下:
?
錯誤一:
Invalid arguments ' Candidates are: void * memcpy(void *, const void *, ?) '
錯誤二:
invalid arguments ' candidates are void * memcpy(void * const void *
?
在網上搜索了一下,說是因為malloc、memset、memcpy、fread等函數在聲明中使用了size_t類型。
size_t類型不能被正常識別而導致錯誤。
?
我的解決方法是,避免使用這些方法,使用new、strcpy等來代替。
?
如:
原來為:
?const char* tmp = env->GetStringUTFChars(jstr_mac, NULL);
?size_t len = strlen(tmp) + 1;
?char* mac = (char*) malloc(len);
?memcpy(mac, tmp, len);
?
可以改為:
?const char* tmp = env->GetStringUTFChars(jstr_mac, NULL);
?int len = strlen(tmp) + 1;
?char* mac = new char[len];
?strcpy(mac, tmp);
?
錯誤一:
Invalid arguments ' Candidates are: void * memcpy(void *, const void *, ?) '
錯誤二:
invalid arguments ' candidates are void * memcpy(void * const void *
?
在網上搜索了一下,說是因為malloc、memset、memcpy、fread等函數在聲明中使用了size_t類型。
size_t類型不能被正常識別而導致錯誤。
?
我的解決方法是,避免使用這些方法,使用new、strcpy等來代替。
?
如:
原來為:
?const char* tmp = env->GetStringUTFChars(jstr_mac, NULL);
?size_t len = strlen(tmp) + 1;
?char* mac = (char*) malloc(len);
?memcpy(mac, tmp, len);
?
可以改為:
?const char* tmp = env->GetStringUTFChars(jstr_mac, NULL);
?int len = strlen(tmp) + 1;
?char* mac = new char[len];
?strcpy(mac, tmp);
總結
以上是生活随笔為你收集整理的Android 使用NDK开发中,遇到memset,memcpy, malloc函数错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人工智能方面有什么创业项目_人工智能创业
- 下一篇: 彻底关闭Windows Defender