[问题] 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