请原谅我,如果它太基本但我会崩溃,而且似乎我真的不明白。
我有一个全局变量:
char *incomingData="";
然后我有这个函数从某些硬件获取一些数据:
void readWifDataAsSever(char* reqData)
{
char data[100]={0};
//...
if (len > 0)
{
for(uint32_t i = 0; i < len; i++)
data[i]=(char)buffer[i];
ParseGetRequest( data ); //some other manipulation
reqData=data;
}
else
reqData="";
}
然后我试图从另一个地方调用该函数,给它全局变量,并从函数中获取新数据:
readWifDataAsSever(incomingData); //incoming data is the global i just show
//check length of incomgin data
很明显,不仅仅是我做错了,我真的不知道指针。
我知道data's
生命只在函数内部。
我试图理解为什么这是错的,你应该怎么做呢。 感谢。
答案 0 :(得分:5)
不允许您尝试执行的操作,因为var genderFilter1 = { someFilter };
var genderFilter2 = { someFilter };
var gridOptions1 = {
data: ...,
columnDefs: [
{ field: 'foo', filter: genderFilter1 },
...
};
var gridOptions12 = {
data: ...,
columnDefs: [
{ field: 'foo', filter: genderFilter2 },
...
};
退出readWifDataAsSever
的那一刻变得无效。通过任何可能仍指向它的指针访问它是未定义的行为。
但是,您的程序甚至没有这样做:因为您按值传递data
指针,对它的任何赋值都不会对调用者产生任何影响,即
reqData
不会更改您的函数调用者所看到的内容。
为了解决问题,您需要执行以下两项操作之一:
由于您正在使用资源有限的嵌入式系统,因此第一种方法最适合您的情况:
reqData=data;