malloc申请一维动态数组的错误
生活随笔
收集整理的這篇文章主要介紹了
malloc申请一维动态数组的错误
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
正確寫法:
??????int *tmp = ( int * )malloc( H*W*sizeof(int) ); ?
??????float?*tmp = ( float * )malloc( H*W*sizeof(float) ); ?
??????double *tmp = ( double * )malloc( H*W*sizeof(double) ); ?
錯誤寫法:
??????double *tmp = ( double * )malloc( H*W*sizeof(double * ) );?
錯誤原因
??????在于字節(jié)數(shù)的表示不應(yīng)該加 * 號。所有數(shù)據(jù)類型加了 * 號后,都變成4個字節(jié)
??????正常情況下,int 4字節(jié);float 4字節(jié);double 8字節(jié)。
??????之前用malloc申請一維動態(tài)數(shù)組,用到double型時總是程序崩潰,現(xiàn)在才知道是申請字節(jié)數(shù)出現(xiàn)問題。寫成double*出錯是因為字節(jié)數(shù)不對,內(nèi)存不夠用,其他數(shù)據(jù)類型都可以順利使用是出于巧合。
總結(jié)
以上是生活随笔為你收集整理的malloc申请一维动态数组的错误的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言读取txt文档中的数据
- 下一篇: C语言动态数组建立方法