0
我有一個頭文件,其中包含char** globalScreen
,我已經分配了內存中的函數,該函數一旦程序在main.c中啓動就會被調用。Segfault的問題可能涉及範圍
我按照以下方式分配了內存;
char (*globalScreen)[SSIZEY] = malloc(SSIZEX * SSIZEY * sizeof(char*));
int i,j;
for(i = 0;i < SSIZEX;i++)
{
for(j = 0; j < SSIZEY;j++)
{
globalScreen[i][j] = (char)0x41;
}
}
還初始化了數組。
然後我可以成功打印整個數組,但只能從我分配並初始化它的函數內部。當我嘗試從main
訪問數組時 - 在調用初始化數組的函數之後,程序段錯誤。
我試過用lldb調試,但發現它似乎無法找到我試圖設置它們的任何位置。 頭文件的相關部分如下;
#ifndef _VECTORDATA_H_
#define _VECTORDATA_H_
#include "vectorAPI.h"
char** globalScreen;
#endif
你可以發佈頭文件中的相關部分嗎? –
你還可以發佈初始化數組的整個函數嗎? –
重命名char ** globalScreen; char ** globalScreenXXX;並嘗試編譯..我認爲他們是不同的變量之一,其中一個是本地的,另一個是全局的。 – houssam