[英]Pointer to pointer allocation then iteration causes segmentation fault
我的以下代碼有問題。 我很確定這是正確的。 我試圖將內存分配給函數中的指針,然后使用for循環將數據寫入同一函數中的分配內存。 但是,當計數器在for循環上達到2時,會導致分段錯誤,或者我嘗試在循環中設置一堆值或從中讀取值。
是的,我已經在StackOverflow上進行了研究,但是我發現以下答案沒有太大幫助。 * 如何分配內存並將其(通過指針參數)返回給調用函數?
#include <cassert>
#include <cstdlib>
#include <cstdio>
typedef unsigned char uint8_t;
void allocMem(uint8_t **i){
*i = new uint8_t[10];
for(int j = 0; j < 10; j++){
printf("%d\n", *i[j]);
//*i[j] = j * 2;
}
}
int main(){
uint8_t *i = 0;
allocMem(&i);
assert(i != NULL);
delete[] i;
}
優先錯誤:
printf("%d\n", *i[j]);
應該
printf("%d\n", (*i)[j]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.