中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

平面設(shè)計(jì)主要做什么的網(wǎng)址seo分析

平面設(shè)計(jì)主要做什么的,網(wǎng)址seo分析,可植入代碼網(wǎng)站開發(fā),鎮(zhèn)江微網(wǎng)站建設(shè)文章目錄 背景過程第一個(gè)坑第二個(gè)坑 arm64-v8a 和 armeabi-v7a的區(qū)別實(shí)例64位,Android設(shè)備CPU:arm64-v8a32位,Android設(shè)備CPU:armeabi-v7a 基本數(shù)據(jù)類型在32位和64位的區(qū)別指針長(zhǎng)度在32位和64位的區(qū)別 其他可能性chatgpt回答參考 背景 使用NDK開發(fā)項(xiàng)目的…

文章目錄

  • 背景
    • 過程
      • 第一個(gè)坑
      • 第二個(gè)坑
  • arm64-v8a 和 armeabi-v7a的區(qū)別
  • 實(shí)例
    • 64位,Android設(shè)備CPU:arm64-v8a
    • 32位,Android設(shè)備CPU:armeabi-v7a
  • 基本數(shù)據(jù)類型在32位和64位的區(qū)別
    • 指針長(zhǎng)度在32位和64位的區(qū)別
  • 其他可能性
  • chatgpt回答參考

背景

使用NDK開發(fā)項(xiàng)目的一個(gè)安全庫的時(shí)候,踩了一個(gè)坑。在這里做一個(gè)記錄和總結(jié),避免以后重復(fù)踩坑。
需求:開發(fā)安全庫,用作密鑰加密解密,體系位非對(duì)稱密鑰體系。
經(jīng)歷:使用的是合作公司提供的C源碼,通過JNI接入C代碼,提供給Java層調(diào)用。

過程

第一個(gè)坑

運(yùn)行的時(shí)候Android stduio顯示列鏈接錯(cuò)誤,懷疑是CMake的問題。新建一個(gè)test.c和test.h可以正常運(yùn)行。發(fā)現(xiàn)是C源碼里面沒有加上:

#ifdef __cplusplus
extern "C"
{
#endif
//c代碼聲明
#ifdef __cplusplus
};
#endif

導(dǎo)致C++鏈接時(shí)候和C的符號(hào)對(duì)不上,鏈接失敗,坑的地方在于編譯器沒有提示這個(gè)問題。只能這樣試出來。

第二個(gè)坑

前面幾個(gè)接口可以正常運(yùn)行,中間某個(gè)接口不能打印,程序不崩潰,只是不能打印。
同樣的代碼在Linux設(shè)備可以正常運(yùn)行。
debug進(jìn)去C源碼里面進(jìn)行代碼review和數(shù)據(jù)觀察分析,發(fā)現(xiàn)里面定義了long 、long long之類的變量。每次在某些循環(huán)操作里面斷開debug。沒能找出原因。
在代碼里面加上數(shù)據(jù)打印,在懷疑的代碼段加上大量的打印日志,觀察數(shù)據(jù)是否越界。數(shù)據(jù)太多,也發(fā)現(xiàn)也沒有越界導(dǎo)致crash。
調(diào)試和思路了半天,沒有思路了。那另外一臺(tái)機(jī)器來跑一下,bingo!
居然可以正常打印結(jié)果值了。

首先第一件想到的是,可能是cpu架構(gòu)不同導(dǎo)致的。
第一臺(tái)機(jī)器是arm64-v8a,第二臺(tái)測(cè)試正常的cpu是armeabi-v7a。
好吧,他們的區(qū)別是一臺(tái)是64位,一臺(tái)是32位。
懷疑就是不同位數(shù)cpu里面數(shù)據(jù)長(zhǎng)度不同導(dǎo)致的。

arm64-v8a 和 armeabi-v7a的區(qū)別

在Android開發(fā)中,arm64-v8aarmeabi-v7a 是兩種不同的CPU架構(gòu)。arm64-v8a 適用于64位ARM處理器,而 armeabi-v7a 適用于32位ARM處理器。

先來跑一個(gè)實(shí)例看看。

實(shí)例

void print64And32(){//寫一個(gè)代碼32位機(jī)器上運(yùn)行時(shí),輸出sizeof(指針)的結(jié)果是多少,64位機(jī)器上運(yùn)行時(shí),輸出sizeof(指針)的結(jié)果是多少?LOGD("sizeof(int) = %d\n", sizeof(int));LOGD("sizeof(long) = %d\n", sizeof(long));LOGD("sizeof(long long) = %d\n", sizeof(long long));LOGD("sizeof(char) = %d\n", sizeof(char));LOGD("sizeof(float) = %d\n", sizeof(float));LOGD("sizeof(double) = %d\n", sizeof(double));LOGD("sizeof(void *) = %d\n", sizeof(void *));LOGD("sizeof(char *) = %d\n", sizeof(char *));LOGD("sizeof(int *) = %d\n", sizeof(int *));LOGD("sizeof(long *) = %d\n", sizeof(long *));LOGD("sizeof(long long *) = %d\n", sizeof(long long *));LOGD("sizeof(float *) = %d\n", sizeof(float *));LOGD("sizeof(double *) = %d\n", sizeof(double *));}

64位,Android設(shè)備CPU:arm64-v8a

sizeof(int) = 4
sizeof(long) = 8
sizeof(long long) = 8
sizeof(char) = 1
sizeof(float) = 4
sizeof(double) = 8
sizeof(void *) = 8
sizeof(char *) = 8
sizeof(int *) = 8
sizeof(long *) = 8
sizeof(long long *) = 8
sizeof(float *) = 8
sizeof(double *) = 8

32位,Android設(shè)備CPU:armeabi-v7a

sizeof(int) = 4
sizeof(long) = 4
sizeof(long long) = 8
sizeof(char) = 1
sizeof(float) = 4
sizeof(double) = 8
sizeof(void *) = 4
sizeof(char *) = 4
sizeof(int *) = 4
sizeof(long *) = 4
sizeof(long long *) = 4
sizeof(float *) = 4
sizeof(double *) = 4

基本數(shù)據(jù)類型在32位和64位的區(qū)別

從上述實(shí)測(cè)可以知道,在32位機(jī)器上,基本數(shù)據(jù)類型的大小如下:

  • int:4字節(jié)
  • long:4字節(jié)
  • long long:8字節(jié)
  • char:1字節(jié)
  • float:4字節(jié)
  • double:8字節(jié)

在64位機(jī)器上,基本數(shù)據(jù)類型的大小如下:

  • int:4字節(jié)
  • long:8字節(jié)
  • long long:8字節(jié)
  • char:1字節(jié)
  • float:4字節(jié)
  • double:8字節(jié)

需要注意的是,指針的大小在32位和64位機(jī)器上都是相同的,都是8字節(jié)。

指針長(zhǎng)度在32位和64位的區(qū)別

32位機(jī)器上運(yùn)行時(shí),輸出sizeof(指針)的結(jié)果是4。
64位機(jī)器上運(yùn)行時(shí),輸出sizeof(指針)的結(jié)果是8。

其他可能性

  1. 架構(gòu)相關(guān)的問題: 你的應(yīng)用程序可能包含了特定于 arm64-v8a 架構(gòu)的代碼,而這段代碼在 armeabi-v7a 上無法正確運(yùn)行。確保你的應(yīng)用程序中沒有架構(gòu)相關(guān)的問題,并且所有的本地代碼都是通用的。

  2. 依賴庫問題: 如果你的應(yīng)用程序使用了本地庫(例如C/C++庫),這些庫可能是特定于 arm64-v8a 的。確保你的應(yīng)用程序包含適用于 armeabi-v7a 的版本的這些庫。

  3. 指令集兼容性: arm64-v8a 使用ARMv8-A指令集,而 armeabi-v7a 使用ARMv7-A指令集。確保你的應(yīng)用程序中的本地代碼對(duì)目標(biāo)指令集是兼容的。

  4. ABI Filters: 在你的 build.gradle 文件中,可能設(shè)置了 ABI Filters,導(dǎo)致只有 arm64-v8a 被打包到 APK 中。檢查你的構(gòu)建配置,確保包含了 armeabi-v7a 的支持。

chatgpt回答參考

當(dāng)你的 C 代碼在 32 位處理器上能夠正常運(yùn)行,但在 64 位處理器上出現(xiàn)問題時(shí),可能有一些常見的原因:

  1. 指針大小和類型問題: 64 位處理器上的指針大小為 8 字節(jié),而在 32 位處理器上為 4 字節(jié)。如果你的代碼中存在對(duì)指針大小的假設(shè)或者類型轉(zhuǎn)換問題,可能導(dǎo)致在 64 位系統(tǒng)上出現(xiàn)問題。請(qǐng)確保你的代碼對(duì)指針操作和類型大小有正確的處理。

  2. 整數(shù)溢出: 如果你的代碼依賴于特定的整數(shù)大小,可能會(huì)在 64 位系統(tǒng)上溢出。在 64 位系統(tǒng)上,int 類型仍然是 32 位,但 long 類型變?yōu)?64 位。確保你的代碼中沒有整數(shù)溢出的問題。

  3. 對(duì)齊問題: 在 64 位系統(tǒng)上,對(duì)齊要求可能更加嚴(yán)格。如果你的代碼依賴于特定的數(shù)據(jù)結(jié)構(gòu)對(duì)齊方式,確保你的結(jié)構(gòu)體或變量的對(duì)齊方式是正確的。

  4. 未初始化變量: 64 位系統(tǒng)上的內(nèi)存布局可能與 32 位系統(tǒng)不同。確保你的代碼中所有的變量都被正確初始化,以防止使用未初始化的內(nèi)存。

  5. 依賴的庫或第三方代碼: 如果你的代碼依賴于特定的庫或第三方代碼,確保這些庫在 64 位系統(tǒng)上是兼容的。有時(shí),問題可能并不是在你的代碼中,而是在你依賴的庫中。

  6. 匯編語言代碼: 如果你的代碼包含了匯編語言部分,確保這些匯編語言代碼是對(duì) 64 位系統(tǒng)的正確支持。

總體而言,要確保 C 代碼能夠在 64 位處理器上正確運(yùn)行,需要注意 32 位和 64 位系統(tǒng)之間的差異,并確保代碼中沒有與平臺(tái)相關(guān)的假設(shè)。最好的做法是使用編譯器提供的宏來處理不同平臺(tái)的區(qū)別,以確保代碼的可移植性。

http://m.risenshineclean.com/news/31790.html

相關(guān)文章:

  • 空間網(wǎng)站大全站點(diǎn)
  • 關(guān)于網(wǎng)站開發(fā)的網(wǎng)站企業(yè)培訓(xùn)課程設(shè)計(jì)
  • 做公司做網(wǎng)站有用嗎百度導(dǎo)航怎么下載
  • 濟(jì)南快速建站模板網(wǎng)站結(jié)構(gòu)優(yōu)化的內(nèi)容和方法
  • 有哪些網(wǎng)站能免費(fèi)建站網(wǎng)站如何推廣運(yùn)營
  • javaweb做網(wǎng)站的優(yōu)點(diǎn)中國科技新聞網(wǎng)
  • 800元做網(wǎng)站百度數(shù)據(jù)分析
  • 動(dòng)態(tài)網(wǎng)站開發(fā)畢業(yè)論文網(wǎng)站軟文是什么
  • 建網(wǎng)站必須要服務(wù)器嗎臺(tái)州seo網(wǎng)站排名優(yōu)化
  • 做里番網(wǎng)站犯法嗎新鄭網(wǎng)絡(luò)推廣外包
  • asp.net網(wǎng)站搬遷到移動(dòng)終端中文域名注冊(cè)官網(wǎng)入口
  • 為什么大網(wǎng)站的百度快照更新速度慢還排第一廣告公司名稱
  • 福州網(wǎng)站怎么做的免費(fèi)網(wǎng)站誰有靠譜的
  • 建網(wǎng)站 西安seo網(wǎng)站排名優(yōu)化公司哪家好
  • 淘客請(qǐng)人做網(wǎng)站阿里指數(shù)在線查詢
  • 網(wǎng)站開發(fā) 網(wǎng)頁制作網(wǎng)頁推廣鏈接怎么做
  • 網(wǎng)頁設(shè)計(jì)與網(wǎng)站建設(shè)的概述優(yōu)化是什么梗
  • 網(wǎng)絡(luò)營銷相關(guān)的崗位有哪些新手seo入門教程
  • 廣州代做網(wǎng)站二維碼推廣賺傭金平臺(tái)
  • sketch視頻教程網(wǎng)站西安seo建站
  • 如何刪除自己建的網(wǎng)站seo分析報(bào)告
  • 微信頁面徐州自動(dòng)seo
  • wordpress源代碼優(yōu)化分析
  • 做外貿(mào)網(wǎng)站詐騙株洲seo優(yōu)化哪家好
  • 五百丁簡(jiǎn)歷模板官方網(wǎng)站互聯(lián)網(wǎng)營銷師報(bào)名入口
  • 網(wǎng)站首頁ico怎么做平臺(tái)網(wǎng)站開發(fā)公司
  • 邢臺(tái)新聞網(wǎng)關(guān)鍵詞優(yōu)化的主要工具
  • 中國建筑工程人才網(wǎng)湖南有實(shí)力seo優(yōu)化
  • 高級(jí)程序員培訓(xùn)西安seo高手
  • 提供專業(yè)網(wǎng)站小程序開發(fā)朝陽網(wǎng)站建設(shè)