内存分配成功,但并未初始化
生活随笔
收集整理的這篇文章主要介紹了
内存分配成功,但并未初始化
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
內(nèi)存分配成功,但并未初始化
(1)犯這個(gè)錯(cuò)誤往往是由于沒有初始化的概念或者是以為內(nèi)存分配好之后其值自然為0。
(2)在定義一個(gè)變量時(shí),第一件事就是初始化。你可以把它初始化為一個(gè)有效的值,比如:
? int i = 10;
?char *p = (char *)malloc(sizeof(char));?
但是往往這個(gè)時(shí)候我們還不確定這個(gè)變量的初值,這樣的話可以初始化為0 或NULL。?
int i = 0;?
char *p = NULL;?
如果定義的是數(shù)組的話,可以這樣初始化: int a[10] = {0}; 或者用memset 函數(shù)來初始化為0:?
memset(a,0,sizeof(a)); memset 函數(shù)有三個(gè)參數(shù),第一個(gè)是要被設(shè)置的內(nèi)存起始地址;第二個(gè)參數(shù)是要被設(shè)置的值;第三個(gè)參數(shù)是要被設(shè)置的內(nèi)存大小,單位為byte。這里并不想過多的討論memset 函數(shù)的用法,如果想了解更多,請(qǐng)參考相關(guān)資料。
(1)犯這個(gè)錯(cuò)誤往往是由于沒有初始化的概念或者是以為內(nèi)存分配好之后其值自然為0。
(2)在定義一個(gè)變量時(shí),第一件事就是初始化。你可以把它初始化為一個(gè)有效的值,比如:
? int i = 10;
?char *p = (char *)malloc(sizeof(char));?
但是往往這個(gè)時(shí)候我們還不確定這個(gè)變量的初值,這樣的話可以初始化為0 或NULL。?
int i = 0;?
char *p = NULL;?
如果定義的是數(shù)組的話,可以這樣初始化: int a[10] = {0}; 或者用memset 函數(shù)來初始化為0:?
memset(a,0,sizeof(a)); memset 函數(shù)有三個(gè)參數(shù),第一個(gè)是要被設(shè)置的內(nèi)存起始地址;第二個(gè)參數(shù)是要被設(shè)置的值;第三個(gè)參數(shù)是要被設(shè)置的內(nèi)存大小,單位為byte。這里并不想過多的討論memset 函數(shù)的用法,如果想了解更多,請(qǐng)參考相關(guān)資料。
總結(jié)
以上是生活随笔為你收集整理的内存分配成功,但并未初始化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为指针分配的内存太小
- 下一篇: 常见的内存错误