2016-04-15 95 views
2

我有一個char*[]陣列。我需要能夠分配字符串,並再次刪除它們,但我不知道:如何檢查數組元素是否被佔用? +1 more

  1. 如何檢查一個元素是否已經有一個字符串,所以我不覆蓋它,如果它已被佔用,繼續下一個元素?
  2. 如何在事後再次釋放它?

如果有人需要更多的信息,請讓我知道,我想第一次使用char *陣列。

回答

6

將該數組的每個成員初始化爲NULL。 然後,如果某個元素包含NULL,則可以假定它未被初始化。例如

char *charPtr[3] = { NULL, NULL, NULL }; 

要爲某個元素指定一個不同的字符串,您可以將一個新字符串重新分配給該元素。

charPtr[0] = "new string"; 

正如在評論中提到的,要刪除一個字符串你要麼做一個

charPtr[0] = NULL; 

或低於當且僅當charPtr[0]包含malloc和家人或功能類似strdup獲得一個指針:

free(charPtr[0]); 
charPtr[0] = NULL; 
+1

...並刪除字符串:'charPtr [0] = NULL';或者'free(charPtr [0]); charPtr [0] = NULL;'當且僅當'charPtr [0]'包含由'malloc'類函數或'strdup'獲得的指針。 –