c語言可以釋放陣列中的單個元素結構麼?

時間 2021-06-01 18:04:12

1樓:

myStruct** ptr=(myStruct**)malloc(10*sizeof(myStruct*));

int i=0;

for(;i<10;i++)

是這個意思吧,一旦某個元素指標用不到了就可以free(ptr[i]) ,等所有的ptr[i]都被free後就可以free(ptr)

2樓:劉生

你說的是指標陣列? 陣列裡每個元素存放乙個指標? 然後每個指標指向一小片記憶體。

你說的過程應該是可以的。估計你程式寫的有問題。

還有,如果你非要這麼幹的話。建議你在把陣列分配出來後,立刻把裡面所有東西都初始化成0。

以後你每free掉一塊記憶體,也盡量把那個指標賦值成null(0)。

3樓:吾若為皇

你的意思是不是在陣列裡面存放指標,然後再針對每個指標進行記憶體申請?當然可以,掛掉肯定還是程式有問題,注意申請釋放順序,注意空指標,防止野指標,好好看看,一定能看出問題的。

4樓:ANNIX

理論上C語言從「操作粒度」上來說是可以的,然而這樣做沒有意義,空間粒度分的很細,時間粒度不值得

原諒我只能這麼表述

不知道大家對於「粒度」有沒有更好的表述,尺度?

在C語言中 int a 10 指數組有10個元素,a 9 表示第十個元素,那a 10 去哪了呢求教

如果是這麼寫 int 10 a 表示有一變數a有10個int,然後記住取a中元素時是從0開始就行了,a 0 a 9 你的困惑是為什麼寫的時候出現了a 10 這個東西,用的時候沒有。這是C的設計問題,本來正確設計方式應該開頭那種,自始至終就沒有a 10 類似的坑還有指標的宣告方式 int p和int ...

c語言陣列可以儲存不同型別資料嗎?

乙隻樹 不可以,陣列的元素必須時同一種型別,因為記憶體的分配是按照 單個元素所佔記憶體 元素個數分配的。當然,你的陣列元素可以是不同型別成員組成的乙個結構體型別。 在c 裡可以做到,比如std variantauto printer auto value else ifconstexpr std i...

C語言如何實現陣列的自增長?

王飛 template void Array reallocate unsigned int new size T old data data data new T new size allocated new size int end used new size used new size for...