[問題] malloc的問題

作者: cord (海派甜心)   2014-05-17 01:13:22
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
dev-c
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
c語言
問題(Question):
*[36m程式碼(Code):(請善用置底文網頁, 記得排版) *[m
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int main(int argc, char *argv[]) {
int len = 0;
int * pArr = (int*)malloc(sizeof(int)*len);
pArr[0] = 987;
pArr[1] = 100;
pArr[2] = 200;
pArr[3] = 300;
pArr[4] = 400;
printf("%d %d %d %d %d",pArr[0],pArr[1],pArr[2],pArr[3],pArr[4]);
return 0;
}
預期的正確結果(Expected Output):
執行正確 但為什麼len設為零
還是可以印出來 不會出錯
執行結果
987 100 200 300 400
作者: CaptainH (Cannon)   2014-05-17 01:34:00
Implementation-defined
作者: LPH66 (-6.2598534e+18f)   2014-05-17 01:49:00
沒出事是你運氣好
作者: firejox (Tangent)   2014-05-17 03:17:00
執行正確不代表不會出事..
作者: Raymond0710 (雷門)   2014-05-17 12:59:00
會發生什麼事你無法確定
作者: kwpn (ITSST)   2014-05-17 13:20:00
我覺得沒出事是運氣不好,等你以後出事,會更難找出問題.
作者: tomnelson   2014-05-17 14:51:00
不強制轉型compile時會有warning吧!? 但你pArr都宣告成pointer to int,電腦當然也用pointer to int的結構去操作pArr,會出什麼錯誤?
作者: azureblaze (AzureBlaze)   2014-05-17 15:21:00
c void*可以自動轉 c++一定要強制轉
作者: FreedomMax (FreedomKnight)   2014-05-18 13:47:00
c 是不理你 type 的

Links booklink

Contact Us: admin [ a t ] ucptt.com