关于C指针here的求èŒé¢è¯•é—®é¢˜ä¹‹ä¸€å¦‚下:什么是空指针赋值错误?
我用谷æŒæœç´¢äº†ä¸€æ®µæ—¶é—´ï¼Œæ²¡æœ‰çœ‹åˆ°ä»»ä½•åˆç†çš„解释。那是什么?试图通过空指针写?æŸç§æž¶æž„或环境特定的东西?究竟是什么错误?
ç”案 0 :(得分:20)
http://www.faqs.org/qa/qa-3786.html
 ÂNULL指针赋值是è¿è¡Œæ—¶é”™è¯¯   它的出现是由于å„ç§åŽŸå› 导致您的程åºè¯•å›¾è®¿é—®éžæ³•å†…å˜ä½ç½®ã€‚      éžæ³•ä½ç½®æ„味ç€ä½ç½®ä½äºŽæ“作系统地å€ç©ºé—´æˆ–其他进程内å˜ç©ºé—´ä¸ã€‚     在stdio.hä¸ï¼ŒNULL定义为0 Â Â Â Â å› æ¤ï¼Œæ¯å½“您的程åºå°è¯•è®¿é—®ç¬¬0个ä½ç½®æ—¶ï¼Œæ“ä½œç³»ç»Ÿä¼šå› è¿è¡Œæ—¶åˆ†é…错误而导致程åºæ»äº¡ï¼Œå› 为第0个ä½ç½®ä½äºŽæ“作系统地å€ç©ºé—´ä¸ï¼Œæ“作系统ä¸å…许用户程åºè®¿é—®å…¶åœ°å€ç©ºé—´ã€‚
示例代ç :
int* ptr = NULL;
*ptr = 3;
<强>解释强>
åœ¨å‡ ä¹Žæ¯ä¸ªç³»ç»Ÿä¸Šï¼Œåœ°å€0都被ä¿ç•™ã€‚系统ä¸å…许您写入该ä½ç½®ã€‚如果您å°è¯•ï¼Œæ‚¨å°†èŽ·å¾—è¿è¡Œæ—¶å¼‚常(访问冲çªï¼Œsegmentation faultç‰ï¼‰ã€‚
ç”案 1 :(得分:1)
æˆ‘å®žé™…ä¸Šæ— æ³•å›žæƒ³èµ·æºä»£ç ï¼Œä½†æ ¹æ®æºä»£ç ,æ¤è¿è¡Œæ—¶é”™è¯¯ä»…é™äºŽç›¸åº”编译器投入使用的ä¸å°åž‹å†…å˜æ¨¡åž‹ã€‚ä½ çœ‹ï¼Œå¦‚å‰æ‰€è¿°ï¼Œç©ºæŒ‡é’ˆå®žé™…上并ä¸æŒ‡å‘零,实际上ä¸åŒçš„编译器使用ä¸åŒä½†å›ºå®šçš„内å˜ä½ç½®æ¥ç”¨ä½œç©ºæŒ‡é’ˆã€‚
让我们考虑TC编译器的情况,这个编译器在数æ®æ®µçš„底部放置四个零å—节和TC版æƒå£°æ˜Žã€‚ TC还使用DS:0000ä½ç½®ï¼Œæ•°æ®æ®µåº•éƒ¨ä¸ºç©ºæŒ‡é’ˆä½ç½®ã€‚å› æ¤ï¼Œä¸ºè¿™ä¸ªç©ºæŒ‡é’ˆèµ‹å€¼ï¼Œå°†ä¼šå®žé™…改å˜å››ä¸ªå—节,并å¯èƒ½æžä¹±ç‰ˆæƒå£°æ˜Žã€‚
现在,在程åºç»ˆæ¢æ—¶ï¼Œå°†æ£€æŸ¥å››ä¸ªé›¶å’Œç‰ˆæƒæ ‡é¢˜ä»¥è¿›è¡Œä»»ä½•ç±»åž‹çš„更改。如果å‘现任何更改,则会生æˆNull Pointer Assignment错误。
所以,我认为它ä¸ä»…仅是空指针,任何狂野的指针,如果试图访问æŸäº›å…³é”®åŒºåŸŸï¼Œä½ 会é‡åˆ°ç©ºæŒ‡é’ˆèµ‹å€¼é”™è¯¯ã€‚
ç”案 2 :(得分:0)
在许多情况下,您å¯ä»¥çœ‹åˆ°é—®é¢˜ã€‚ä½†å…³é”®æ˜¯ï¼Œä½ æ²¡æœ‰æ£ç¡®åˆ†é…内å˜ã€‚è¿è¡Œç¨‹åºåŽï¼Œä»¥ä¸‹ä»£ç 将生æˆNull指针赋值错误消æ¯ã€‚注æ„:它将æ£ç¡®ç¼–译。
void CopyMessage(char *p)
{
strcpy(p, "welcome");
}
void main()
{
char *src;
CopyMessage(src);
}
ç”案 3 :(得分:0)
当您å°è¯•æŒ‡å‘éžæ³•å†…å˜ç©ºé—´ï¼ˆé€šå¸¸æ˜¯ä¸ºæ“作系统ä¿ç•™çš„地å€0)时,会å‘生è¿è¡Œæ—¶é”™è¯¯ã€‚
ç”案 4 :(得分:-1)
2018-10-15:é‡å†™
我对这个ç”案的æ„图是对空指针的最基本概念的补充。在许多地方列出的这个最简å•çš„定义是æ¯å½“指å‘地å€çš„基值被赋值为&#39; 0&#39;或NULLå€¼ï¼Œå› ä¸ºé›¶é¡µé¢ï¼Œç¬¬0个内å˜ä½ç½®æ˜¯æ“作系统地å€ç©ºé—´çš„一部分,æ“作系统ä¸å…许用户程åºè®¿é—®å…¶åœ°å€ç©ºé—´ã€‚在这ç§æƒ…况下,预编译器或编译器å¯èƒ½ä¼šç”Ÿæˆé”™è¯¯ï¼Œæˆ–者æ“作系统本身在è¿è¡Œæ—¶å¯èƒ½ä¼šå› 内å˜è®¿é—®å†²çªè€Œç”Ÿæˆé”™è¯¯ã€‚
以下对空指针的讨论基于编程ä¸åŒ…å«çš„概念,这些概念å‘生在å…许精确控制的è¯è¨€çš„机器级别,并且需è¦äº†è§£å¦‚何处ç†å˜é‡ç©ºé—´ã€‚
大多数高级è¯è¨€å’Œç¼–译器都å¯ä»¥ä½¿ç”¨é€‚当的&#39;类型æ¥é˜²æ¢è¿™ç§æƒ…况å‘生。转æ¢ï¼Œå¹¶æŒ‡å®šä¸€ä¸ªé€‰é¡¹åº“,并在索引编制ä¸ä¸åšä»»ä½•ç²¾ç¥žé”™è¯¯è®¡ç®—。 &#39; C&#39;作为一ç§è¯è¨€ï¼Œåœ¨æ²¡æœ‰æŒ‡å®šæœ€ä¸¥æ ¼çš„编译器å‚数的情况下,特别容易出现这些类型的错误,以åŠå¦‚今在å£è¢‹é‡Œæ‰¾åˆ°çš„ä¸å¤ªå¤æ‚的基于机器的编译器或编程è¯è¨€ã€‚处ç†å™¨ã€‚
然而,自计算机和编程è¯è¨€å¼€å§‹ä»¥æ¥ï¼Œé›¶æŒ‡é’ˆé”™è¯¯çš„概念已扩展为包å«æŒ‡å‘任何å—ä¿æŠ¤å†…å˜ä½ç½®ä¸ç¬¬0个ä½ç½®çš„任何指针。但尤其是在å¯ä»¥ç”¨äºŽæŒ‡å‘任何内å˜ä½ç½®çš„内å˜ä½ç½®å¦‚ä½•è¢«æ— æ„ä¸è¦†ç›–以包å«ç©ºå€¼çš„上下文ä¸ã€‚åœ¨è¿™é‡Œï¼Œæˆ‘è€ƒå¯Ÿäº†è¿™ä¸ªæ¦‚å¿µï¼Œå› ä¸ºæˆ‘ç§°ä¹‹ä¸ºâ€œ1&#39;的错误â€ã€‚当程åºå‘˜å¿…须在选项库&#39; 0&#39;之间切æ¢æ—¶ä¼šå‘生这ç§æƒ…况。或选项基础&#39; 1&#39;。这是一个计数问题,我们开始计算&#39; 0&#39;或者&#39; 1&#39;如:
Option Base 0
[0,1,2,..,9] or
Option Base 1
[1,2,3,...,10]
表示包å«10ä¸ªå…ƒç´ çš„æ•°ç»„ã€‚é”™è¯¯1å¯èƒ½ä¼šå¯¼è‡´é”™è¯¯è®¡ç®—,从而导致指å‘第一个å˜å‚¨ä½ç½®çš„指针在&#39;之å‰ã€‚数组,
Option Base 1
0[1,2,3,...,10]
^
|Last memory location of another variable space 'before' this variable space
或者&#39;之åŽçš„第一个ä½ç½®æ ¹æ®å®šä¹‰è¶…出界é™çš„数组。
Option Base 0
[0,1,2,...,9]10
^
|First memory location of another variable after this variable
但是,当处ç†ä½¿ç”¨ç›´æŽ¥å†…å˜è®¿é—®çš„编程时,如在任何è¯è¨€çš„原始机器代ç ä¸ï¼Œ1的错误å¯èƒ½æ˜¯æ‚²å‰§æ€§çš„,将一个éžé¢„期的值放在预期范围之外的å˜å‚¨ä½ç½®ï¼Œåœ¨å˜é‡çš„情况下空间和使用指针是在预期å˜é‡ä¹‹å‰æˆ–之åŽçš„å˜é‡ç©ºé—´ï¼Œå½“åˆå§‹åŒ–或清除数组时,会创建一个“空â€ï¼†ï¼ƒ39;或者在ä¸å¸Œæœ›çš„ä½ç½®ä¸º0,特别是如果它是一个指针数组,则在éžé¢„期的å˜é‡ä¸å‡ºçŽ°ç©ºæŒ‡é’ˆé”™è¯¯ã€‚这当然å–决于å¯å˜ç©ºé—´çš„结构和/或类型。如果å˜é‡æˆ–其他å˜å‚¨åœ°å€ç©ºé—´åµŒå¥—在代ç ä¸ï¼Œåˆ™ä¼šç‰¹åˆ«éº»çƒ¦ã€‚æ£å¦‚我先å‰æ‰€è¿°ï¼Œè®¸å¤šé«˜çº§è¯è¨€ç¼–译器å¯ä»¥ç»•è¿‡å¤§å¤šæ•°æ¤ç±»é”™è¯¯;但是,当在机器代ç ä¸ç¼–写特定å程åºæ—¶ï¼Œæ— 论出于何ç§åŽŸå› 认为必è¦ï¼Œå¿…须特别注æ„ç¡®ä¿é€‰é¡¹åº“明确定义并通过实践éµå®ˆï¼Œå¦‚æžœä¸æ˜¯ç¼–译器约定。
首先,程åºå‘˜è®¤è¯†åˆ°ç¨‹åºå’Œå˜å‚¨åŒºåŸŸéƒ½æ˜¯æ˜Žç¡®å®šä¹‰çš„å¿…è¦æ€§ï¼Œæ²¡æœ‰æ˜Žç¡®åŒæ„,任何东西都ä¸åº”该修改一个数æ®ä½ã€‚这对于空指针是至关é‡è¦çš„ï¼Œå› ä¸ºåœ¨æ“作系统的零页é¢åŒºåŸŸä¸çš„第0个å˜å‚¨å™¨ä½ç½®é€šå¸¸ç”¨äºŽå˜å‚¨å †æ ˆï¼Œè¯¥å †æ ˆæ˜¯è¢«æŽ¨å…¥å †æ ˆä»¥è¿›è¡Œè¿”回æ“作的å˜å‚¨å™¨ä½ç½®ã€‚系统调用是å¦ç”±äºŽå¯å±è”½æˆ–ä¸å¯å±è”½çš„ä¸æ–而推é€è¿”回æ“作的地å€ï¼ˆä»Žç³»ç»Ÿä¸æ–çš„ä½ç½®å¼¹å‡ºè¿”回地å€ï¼‰ï¼Œæˆ–è€…å› ä¸ºç¨‹åºå‘˜æƒ³è¦æŽ¨é€æ•°æ®æˆ–内å˜ä½ç½®ç¨åŽä»Žè¿™ä¸ªå †æ ˆå¼¹å‡ºã€‚这是一个ä¿æŠ¤åŒºã€‚åƒä»»ä½•æŒ‡å‘有效内å˜åœ°å€çš„æŒ‡é’ˆä¸€æ ·ï¼Œäººä»¬ä¸å¸Œæœ›å†™å…¥é”™è¯¯çš„ä½ç½®ï¼Œå¦‚果被覆盖,则第0个ä½ç½®ç‰¹åˆ«å®¹æ˜“å—到影å“ï¼Œå› ä¸ºå˜é‡é€šå¸¸ä¸ºç©ºæˆ–者从åˆå§‹ä¸Šç”µçŠ¶æ€çš„值为0ï¼Œå› æ¤å˜é‡ä¸Šç”µåŽæœªæ˜Žç¡®å®šä¹‰æˆ–有æ„åˆå§‹åŒ–çš„å¯èƒ½ä¸ºé›¶ã€‚
å¦‚æžœå †æ ˆåœ¨é›¶é¡µé¢æˆ–任何包å«è¿”回地å€çš„å †æ ˆä¸ï¼Œå¦‚æžœå€¼è¢«åŽ‹å…¥å †æ ˆï¼Œå¹¶ä¸”åœ¨è¿”å›žï¼†ï¼ƒ39;之å‰æ²¡æœ‰å¼¹å‡ºã€‚é‡åˆ°ï¼Œè¿”回值å¯ä»¥ä¸ºnull或零,返回值指å‘å †æ ˆçš„å†…å˜ä½ç½®ã€‚这是一个空指针错误,它å¯èƒ½ä¸ä¼šç”Ÿæˆé”™è¯¯ï¼Œä½†ä¼šå°†ä»£ç 指针返回到ä¸åŒ…å«ä»£ç çš„åŒºåŸŸï¼Œä¾‹å¦‚å †æ ˆçš„ä¸é—´ä½ç½®ã€‚这些æ¼æ´žåˆ©ç”¨ä¼—æ‰€å‘¨çŸ¥ï¼Œå¸¸å¸¸ç”¨äºŽç ´å系统安全性的方法,以便ä¸é‚£ä¹ˆä¸¥æ ¼çš„ç ´è§£è€…èŽ·å–访问æƒé™;或者å¯ä»¥ç”¨äºŽç‰¹æ®Šæƒ…况下的巧妙访问,或者当æ„å¤–é€ æˆéš¾ä»¥ç¡®å®šæ¥æºçš„å„ç§æ¶ä½œå‰§æ—¶ã€‚
æ£å¦‚我所说,这个æè¿°è¶…å‡ºäº†ç©ºæŒ‡é’ˆé”™è¯¯çš„ä¼ ç»Ÿå®šä¹‰ï¼Œä½†å®ƒä»ç„¶å¯ä»¥äº§ç”Ÿä¸€ä¸ªç©ºæŒ‡é’ˆï¼Œå°½ç®¡æ›´å¸¸äº§ç”Ÿå…¶ä»–é”™è¯¯ï¼Œæˆ–è€…æ ¹æœ¬æ²¡æœ‰ã€‚å®ƒé€šå¸¸æ²¡æœ‰è¡¨æ˜Žå®ƒçš„å˜åœ¨ï¼Œé™¤äº†â€œå¦‚果或何时â€ã€‚程åºæ— 法按预期执行。
这里我æ供了é¢å¤–çš„éžå¸¸è§„示例和空指针赋值错误的潜在æ¥æºçš„定义,而ä¸æ˜¯å®šä¹‰ä¼ 统的ç†è§£ï¼Œè¿™åœ¨ç¼–程约定ä¸æ¯”编程逻辑ä¸çš„错误更多是错误。
è¿™ç§ç±»åž‹çš„错误(未定义或null)éžå¸¸ç½•è§ã€‚但现代节目的å£è¢‹ï¼†ï¼ƒ39;处ç†å™¨ï¼Œä½¿ç”¨åƒArduino,Raspberry PI,AMD或任何其他计算机片上编程的å°å¼è®¾å¤‡ä»¥å„ç§å½¢å¼å˜åœ¨ï¼Œå…¶ä¸è®¸å¤šå½¢å¼ä»Šå¤©å¦‚åŒä»¥å‰ä¸€æ ·ç®€å•ï¼Œè¿™ä¸ªç©ºæŒ‡é’ˆé—®é¢˜ä»Šå¤©ä»ç„¶å˜åœ¨å¹¶ä¸”å¯èƒ½å‘生å³ä½¿åœ¨æœ€å¤æ‚的系统ä¸ä¹Ÿæ˜¯å¦‚æ¤ã€‚æ¤å¤–,构建自己的å˜é‡æˆ–æ•°æ®ç»“æž„çš„å…¬å¸å¯èƒ½ä¹Ÿæ˜¯çŽ°åœ¨æœ€å®¹æ˜“看到æ¤ç±»åž‹é”™è¯¯çš„人。目的是展示å¯ä»¥å¸®åŠ©è¯†åˆ«çš„例å。
æ£å¦‚åœ¨æ—§æ—¶æ‰€å®šä¹‰çš„é‚£æ ·ï¼Œå¾ˆå¿«å°±è®¤è¯†åˆ°äº§ç”Ÿç©ºæŒ‡é’ˆé”™è¯¯çš„æ¡ä»¶ä¹Ÿå¯èƒ½äº§ç”Ÿé”™è¯¯ï¼Œå…¶ä¸æŒ‡é’ˆçš„å€¼è¢«æ— æ„修改。然åŽï¼Œä½œä¸ºä¸€ä¸ªå˜é‡ï¼Œå®ƒè¢«ç”¨ä½œæŒ‡é’ˆå¹¶ä¸”在没有程åºå‘˜çš„æ„图或知识的情况下被覆盖,这å¯èƒ½æ˜¯ç©ºçš„,但也å¯ä»¥æ˜¯ä»»ä½•å…¶ä»–å€¼ã€‚å› æ¤ï¼Œæˆ‘们å‘现å¯ä»¥åˆ›å»ºç©ºæŒ‡é’ˆçš„问题也å¯ä»¥åˆ›å»ºéžnull 指针。空指针是一ç§ç‰¹æ®Šæƒ…况,OFTEN创建系统错误消æ¯;但是,当这些相åŒçš„æ¡ä»¶å¯¼è‡´æŒ‡é’ˆé‡‡ç”¨éšæœºæˆ–未确定的值而ä¸æ˜¯æ•°æ®åº”驻留的原始地å€æ—¶ï¼Œå®ƒçŽ°åœ¨åŒ…å«ä¸€ä¸ªç©ºæˆ–未知地å€ï¼Œå¯¼è‡´æ•°æ®ç§»åŠ¨æˆ–å˜å‚¨åˆ°æ— 效或ä¸éœ€è¦çš„ä½ç½®è¦†ç›–å’Œç ´å该代ç 或数æ®ã€‚
大多数人都会ç†æ‰€å½“然地认为这个是 NOT 一个空指针错误;并且,它们完全100ï¼…æ£ç¡®ï¼ä½†æ˜¯ï¼Œæ¤é”™è¯¯çš„æ ¹æºé€šå¸¸ä¼šåˆ›å»ºå¥‡æ€ªçš„常è§ç©ºæŒ‡é’ˆé”™è¯¯ï¼Œå› 为更多时候指针将包å«ä¸€ä¸ªï¼†ï¼ƒ39; null&#39;ï¼å®šä¹‰ä¸è¿™ä¸ªç»ƒä¹ çš„è¦ç‚¹æ˜¯æŒ‡å‡ºå¦‚何创建空指针也会导致问题似乎没有指出问题的原始æºã€‚ IOW,在概念上没有指å‘é—®é¢˜çš„æŒ‡é’ˆã€‚å› ä¸ºä¸Žå¥‡æ•°ï¼†ï¼ƒ39; null&#39;çš„åˆ›é€ æœ‰å…³ç³»ã€‚æŒ‡é’ˆé—®é¢˜ï¼Œå¹¶ä¸”åœ¨è¿™ç§æƒ…况下,éšåŽç¼ºå°‘指å‘错误æºçš„æ•°æ®ï¼Œå› 为指针是 NOT null而是未定义&#39;从自上而下的编程转å˜ä¸ºé¢å‘对象的事件驱动编程的旧计时器识别出这ç§å…³ç³»ï¼Œå¹¶è®¤è¯†åˆ°è¿™ç§ç±»åž‹çš„“零â€ã€‚指å‘错误似乎没有å¯å®šä¹‰çš„æ¥æºã€‚
由于æ¤ç±»åž‹å¤±è´¥ï¼ŒæŸåçš„æ•°æ®æˆ–æŸå的代ç å¯èƒ½æ— 法在移动到现有未使用的内å˜ä½ç½®æ—¶ç«‹å³æ‰§è¡Œæˆ–使用。但是,当代ç 或数æ®åœ¨è¿è¡Œçš„ç¨åŽæ—¶é—´ç¡®å®žå¯¼è‡´é—®é¢˜æ—¶ï¼Œæ²¡æœ‰å…³äºŽâ€œçœŸå®žâ€çš„ä¿¡æ¯ã€‚错误的ä½ç½®ï¼Œå› 为它从导致它的事件ä¸ç§»é™¤äº†å¾ˆå¤šã€‚æ— è®ºæ˜¯åˆ›å»ºè¿˜æ˜¯åˆ†é…空指针还是创建其他æŸå,它都会修改代ç ,事情会å˜å¾—怪异,真的很奇怪。
总而言之,我将空指针定义为用于指å‘内å˜ä½ç½®çš„任何空或未定义地å€ï¼Œè€Œä¸ç®¡æœ€åˆåˆ›å»ºå®ƒçš„ä½ç½®ã€‚å¯ä»¥ä¸ºæ¤é—®é¢˜å’Œç¤ºä¾‹åˆ†é…空指针分é…错误或许多其他错误。
在更简å•çš„体系结构或编程环境ä¸ï¼Œå®ƒå¯ä»¥å¼•ç”¨æ— æ„ä¸æœ€ç»ˆåˆ›å»ºç©ºå€¼ä½œä¸ºæŒ‡é’ˆçš„任何代ç ï¼Œæˆ–è€…åˆ›å»ºä¸€ä¸ªæ— è®ºå¦‚ä½•éƒ½ä¼šåœæ¢æ‰§è¡Œçš„é”™è¯¯ï¼Œæ¯”å¦‚è¦†ç›–è¿”å›žå †æ ˆä¸çš„一个å—节,覆盖代ç ,代ç ä¸å°å¿ƒå˜æ”¾äº†ä¸€ä¸ªï¼†ï¼ƒ39; 0&#39; 0在错误的ä½ç½®ï¼ŒçŽ°æœ‰çš„代ç ,或者åªæ˜¯ä½œä¸ºé”™è¯¯ä½ç½®çš„æ•°æ®ï¼Œè€Œä¸ä»…仅是地å€ã€‚
所以,虽然上é¢çš„例å,å¯ä»¥æ£å¸¸å·¥ä½œæ¥å®šä¹‰ä¸€ä¸ªç©ºæŒ‡é’ˆçš„例å。所以我们扩展了这个概念,空指针是任何被用作å˜é‡æŒ‡é’ˆçš„指针,并且由于多ç§åŽŸå› ä¸çš„ä»»ä½•ä¸€ä¸ªåŽŸå› ï¼Œè¯¥å˜é‡çš„地å€ä½ç½®çŽ°åœ¨åŒ…å«ä¸€ä¸ªï¼†ï¼ƒ39; null&#39;或者任何éžé¢„期的值,导致它指å‘ä¸å—欢迎的内å˜ä½ç½®ï¼Œæ— 论它是如何到达的,而ä¸ä»…仅是编程逻辑ä¸çš„错误或数å¦è®¡ç®—错误。 IOW,ä¸ä»…仅是指针ä¸çš„0;更具体地说, 内å˜ä½ç½®ä¸æ˜¯ç‰¹å®šç›®æ ‡çš„任何内å˜ä½ç½®çš„零或未定义值,并且在其他情况下具有其现在将执行的OTHER目的ï¼
所以,最åŽï¼Œä¸€ä¸ªäººå¯ä»¥å¾—到一个空指针错误,并在检查指针时å‘现它包å«ä¸€ä¸ªnull;但是,找ä¸åˆ°å°†null放入指针或分é…它的代ç 。这是空指针赋值错误的最广泛定义,并且ç»å¯¹æ˜¯ 空指针错误的最å情况。当在大型程åºä¸å‘生这ç§æƒ…况时,它通常会导致程åºæ»äº¡ï¼Œå› 为如果错误å˜åœ¨äºŽä»¥å‰çš„版本ä¸ï¼Œè€Œæ˜¯å†™å…¥ä»¥å‰å¯è®¿é—®ä½†æœªåˆ†é…çš„éžé¢„期内å˜ä½ç½®ï¼ˆå…许程åºè¿è¡Œæˆ–IOW)在早期版本ä¸ï¼Œé”™è¯¯åœ¨ç¨‹åºæ‰©å±•ä¹‹å‰ä¸è¢«æ³¨æ„,现在曾ç»ä»¥å‰æœªä½¿ç”¨çš„内å˜ä½ç½®åŒ…å«æ–°ä»£ç 或数æ®ï¼Œè¿™å…许旧错误现在在新代ç ä¸ç”Ÿæˆéšæœºé”™è¯¯æˆ–ç ´åæ•°æ®ï¼
例如:在早期版本ä¸ï¼Œé”™è¯¯çš„地å€å€¼ä¼šå¯¼è‡´æ•°æ®è¢«å†™å…¥å®šä¹‰çš„å˜é‡ç©ºé—´ä¹‹å¤–ï¼Œä½†æ˜¯å› ä¸ºæ£åœ¨ç¼–写数æ®å¹¶ä¸”æ£åœ¨è¯»å–æ•°æ®ï¼Œä»¥åŠç¨‹åºå’Œæ‰€æœ‰å†…å®¹ï¼Œå› æ¤å‡ 个版本都没有注æ„到这些数æ®ï¼†ï¼ƒ39;显示&#39;好ï¼ä½†æ˜¯ï¼Œéšç€ç¨‹åºçš„扩展,新代ç 现在å˜åœ¨äºŽç›¸åŒçš„相对地å€ç©ºé—´ä¸ï¼Œè€ŒåŽŸå§‹æ—§é”™è¯¯é”™è¯¯åœ°å†™å…¥é”™è¯¯çš„内å˜ä½ç½®å¹¶ä¸”没有人注æ„到的内å˜ï¼Œæ— 论是一个å—节还是整个数æ®å—ï¼ä½†æ˜¯ï¼ŒçŽ°åœ¨ï¼Œé‚£é‡Œå˜åœ¨æ–°çš„代ç 。当程åºè¿è¡Œè¯¥ç‰¹å®šä»£ç æ—¶ï¼Œæ— è®ºä»Šå¤©æˆ–æ˜Žå¤©è°ƒç”¨åŒ…å«å®ƒçš„任何函数,新数æ®éƒ½ä¼šè¢«æ—§çš„未å‘çŽ°çš„é”™è¯¯æ‰€ç ´å。
寻找原作&#39;一年å‰å˜åœ¨çš„é”™è¯¯çŽ°åœ¨å‡ ä¹Žï¼ˆå¦‚æžœä¸æ˜¯å®Œå…¨çš„è¯ï¼‰ä¸å¯èƒ½æ‰¾åˆ°ã€‚
管ç†å‘˜å’Œå¼€å‘人员逻辑通常è¦æ±‚,我为什么è¦çœ‹é‚£é‡Œï¼Œæˆ‘们知é“代ç è¿è¡Œå¹¶ä¸”在最åŽå‡ 个版本ä¸è¿è¡Œè‰¯å¥½ã€‚但是,现在,新代ç 的一部分ä¸èµ·ä½œç”¨ï¼Œä¸»è¦éƒ¨åˆ†è¢«æ‰“ç ´ã€‚æˆ‘ä»¬çœ‹èµ·æ¥å’Œå¤–观,没有找到任何东西。好åƒé”™è¯¯ä¸å˜åœ¨ï¼Œä½†å®ƒç¡®å®žå˜åœ¨ã€‚é€ æˆå®ƒçš„是什么,è°æ€€ç–‘多年å‰ç¼–写的代ç ?空引导和许多其他错误也是由æ¤å¼•èµ·çš„。通过ç†è§£ï¼Œä»¥åŠå¯ä»¥ç›´æŽ¥æ£€æŸ¥ä»£ç 的良好编辑器,适当的监视器å¯ä»¥ç›‘视修改åŽçš„内å˜ä½ç½®ï¼Œè§¦å‘æš‚åœä»¥ç¡®å®šæ£ç¡®æ‰§è¡Œçš„代ç ,甚至å¯ä»¥æ‰¾åˆ°ã€‚
也许这个ç”案是错误的,并且å¯ä»¥æ›´å¥½åœ°åˆ—在其他地方。主æŒäººï¼Ÿæˆ–è®¸ï¼Œæœ‰äººæ‹…å¿ƒå› ä¸ºè¿™ä¸ªç”案&#39;ä¸è¢«è®¤ä¸ºæ˜¯ç›¸å…³çš„ï¼Œå› ä¸ºå¯¹ä½¿ç”¨â€œï¼ƒ34;赋值â€è¿™ä¸ªè¯æœ‰ä¸€äº›æ‹…忧。在问题ä¸ï¼Œæ„æ€æ˜¯æ•…æ„分é…。但是,转让的概念ä¸éœ€è¦çŸ¥è¯†æˆ–åŒæ„。算法或代ç å¯ä»¥èµ‹å€¼ã€‚空指针å¯ä»¥é€šè¿‡å¤šç§æ–¹å¼åˆ›å»ºï¼Œè¿™é‡Œçš„示例å¯èƒ½æ˜¯ä¼ 统ç†è§£å¯¼è‡´é”™è¯¯çš„åŽŸå› ä¹‹å¤–çš„æœ€å¸¸è§æŒ‡é’ˆï¼Œè€Œé”™è¯¯ä¼¼ä¹Žæ— 处å¯å¯»ã€‚我个人已ç»çœ‹åˆ°è¿™æ ·çš„错误会æ€æ»æ•´ä¸ªäº§å“系列。最终æ¥è‡ªä¸€ç¾¤ç”¨æˆ·çš„喧嚣与他们最喜欢的产å“ä¸ä¸å›ºå®šçš„虫åçš„æŒç»å˜åœ¨æ„Ÿåˆ°ä¸å®‰;旧产å“报废了,一个新产å“ä»Žå¤´å¼€å§‹åˆ›é€ ......
看æ¥æ¤ä¿¡æ¯åŒ…å«ï¼†ï¼ƒ39; a&#39;地方,并作为ç”案包括在这里。积æžçš„富有æˆæ•ˆçš„å馈或建议是值得赞èµçš„,而ä¸æ˜¯ç®€å•çš„投票,如果有人关心评论,或许元讨论是有åºçš„?
å¹²æ¯ã€‚