在IOS開發(fā)的過程中,溢出會在解決問題中遇到,但是大小端一般不會遇到,最近也是研究了一下分享給大家
溢出
一、概念:
數(shù)據(jù)類型超過了計(jì)算機(jī)字長的界限而出現(xiàn)的數(shù)據(jù)溢出,也就是說當(dāng)應(yīng)用程序讀取用戶數(shù)據(jù)贮缅,復(fù)制到應(yīng)用程序開辟的內(nèi)存緩沖區(qū)中,卻無法保證緩沖區(qū)的空間足夠時 ,就存在溢出現(xiàn)象.
二薄坏、代碼示例:
#include <stdio.h>
int main(void) {
short var_s=32767;
var_s++;
printf("var_s+1=%d\n",var_s++);
return 0;
}
三、日志打印:
var_s+1=-32768
Program ended with exit code: 0
四、原因分析:
短整型short int存儲空間是2個字節(jié),16位,有效范圍:-215~215-1,即-32768~32767,當(dāng)var_s加1后就無法保證內(nèi)存空間足夠大去存儲,所以結(jié)果不會是32768.
大小端
一、概念:
大端模式玩敏,是指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的低地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的高地址中质礼,地址由低到高增加,而數(shù)據(jù)從高位往低位放织阳。
小端模式眶蕉,是指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址中唧躲,這種存儲模式將地址的高低和數(shù)據(jù)位權(quán)有效地結(jié)合起來造挽,高地址部分權(quán)值高,低地址部分權(quán)值低弄痹。
二饭入、代碼示例:
#include <stdio.h>
int main(void) {
short var_s=0x1234;
unsigned char *var_p;
var_p=&var_s;
printf("var_p content is %p\n",var_p);
printf("var_p+1 content is %p\n",var_p+1);
printf("*var_p= %d\n",*var_p);
printf("*(var_p+1)= %d\n",*(var_p+1));
return 0;
}
三、日志打印:
var_p content is 0x7fff5fbff7ca
var_p+1 content is 0x7fff5fbff7cb
*var_p=52//0x34
*(var_p+1) =18//0x12
Program ended with exit code: 0
四肛真、圖例說明:
大小端.png
注:編譯器不同可能大小端的存儲方式也不同,也就是說在這臺電腦試驗(yàn)是大端,可能在別的電腦試驗(yàn)出小端存儲