释放用calloc创建的数组时中止(内核转储)
这个 在Cygwin上以释放用calloc创建的数组时中止(内核转储),c,free,calloc,C,Free,Calloc,这个 在Cygwin上以/test.exe运行时,生成输出中止(堆芯转储) 当我声明int*arr(即使保持(双*)强制转换),或者当我更新arr[0]而不是arr[I]时,程序正常退出。什么带来了变化 gcc test.c -std=c99 -o test 到 更新: sizeof(double)和sizeof(指针)取决于体系结构。在你的情况下,它们是不同的。改变 gcc test.c -std=c99 -o test 到 更新: sizeof(double)和sizeof(指针)取决于
/test.exe
运行时,生成输出中止(堆芯转储)
当我声明int*arr
(即使保持(双*)
强制转换),或者当我更新arr[0]
而不是arr[I]
时,程序正常退出。什么带来了变化
gcc test.c -std=c99 -o test
到
更新:
sizeof(double)
和sizeof(指针)
取决于体系结构。在你的情况下,它们是不同的。改变
gcc test.c -std=c99 -o test
到
更新:
sizeof(double)
和sizeof(指针)
取决于体系结构。在您的情况下,它们是不同的。我也想说这一点,但有趣的是,为什么会出现如此错误,sizeof(双指针)!=sizeof(双倍)?啊,是的,那个,或者sizeof(*arr)
。。。错过了该死的星号@加布里埃尔指针的大小可能不是两倍。不管它们指向什么,指针的大小总是相同的(并且取决于架构)@username如果您接受answer@MattMcNabb那么,void*
如何在这个系统上工作呢?我也想这么说,但仍然很有趣的是,为什么会出现这样的错误,sizeof(双指针)!=sizeof(双倍)?啊,是的,那个,或者sizeof(*arr)
。。。错过了该死的星号@加布里埃尔指针的大小可能不是两倍。不管它们指向什么,指针的大小总是相同的(并且取决于架构)@username如果您接受answer@MattMcNabb那么void*
在这个系统上是如何工作的呢?哈哈,谢谢所有的反对票。显然,当我被一些愚蠢的事情难倒时,我不应该这样说:谢谢所有的反对票。显然,当我被一些愚蠢的事情难倒时,我不应该这么做:P
double *arr = (double*) calloc(1000, sizeof(arr));
double *arr = (double*) calloc(1000, sizeof(double));