小编H_s*_*red的帖子

使用C中的字符指针为结构分配内存

我今天很难修复代码,然后我遇到类似的东西:

typedef struct {
int a; 
int b; 
int c;
int d;
char* word;
} mystruct;

int main(int argc, char **argv){

    mystruct* structptr = malloc(sizeof(mystruct));
    if (structptr==NULL) {
        printf("ERROR!")
        ...
    }
    ...
    free(structptr);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

代码由于事实而给出了大量内存错误,这char* word是一个可变长度的字符串,而malloc没有为它分配足够的内存.实际上它只是20 Bytes为整体分配struct.有没有解决这个问题的方法,而不是char*char word[50]什么?

c memory malloc struct pointers

9
推荐指数
1
解决办法
2万
查看次数

当新大小与旧大小相同时,realloc的行为

我正在努力提高代码效率.我有这样的事情:

    typedef struct{
    ...
    }MAP;



    MAP* pPtr=NULL;
    MAP* pTemp=NULL;
    int iCount=0;
    while (!boolean){
    pTemp=(MAP*)realloc(pPtr,(iCount+1)*sizeof(MAP));
    if (pTemp==NULL){
    ...
    }
    pPtr=pTemp;
    ...
    iCount++;
    }
Run Code Online (Sandbox Code Playgroud)

内存正在动态分配.我想减少realloc调用,使代码更有效.我想知道如果新大小等于旧大小,realloc将如何表现.电话会被忽略吗?

c memory realloc

7
推荐指数
1
解决办法
3309
查看次数

从程序重启linux

之前已经问过这个问题:如何从C++程序中重启Linux?

但是,没有一个答案似乎对我有用.

这是我的问题:

我有一个硬件上的程序.我可以以root用户身份登录并运行它而不会出现任何问题.但是,如果我以root priveleges身份登录为其他用户,程序执行正常,但不会重新启动.它只关闭当前的Telnet会话.

要重启,我已经习惯了system(reboot).到目前为止,我尝试过:

sync();
reboot(RB_POWER_OFF);
Run Code Online (Sandbox Code Playgroud)

execl("/sbin/reboot","reboot",NULL,NULL);
Run Code Online (Sandbox Code Playgroud)

无济于事.

(我不确定,如果我使用execl得当.这是我第一次使用它.如果我搞砸了,请纠正我).

任何帮助,将不胜感激.

编辑:

/data/local/sbin # cat /etc/passwd
root:x:0:0:root:/root:/bin/sh
service:54zljpSAe:0:0:root:/root:/data/local/sbin/script
Run Code Online (Sandbox Code Playgroud)

如果我以服务身份登录,将运行"script".用户有一个列表选项可供选择.其中一个选项是运行上述程序.

编辑:

另外值得一提的是:脚本中的一个选项是重启系统.如果从脚本内部调用,它可以工作.但我想从程序中调用reboot.

c linux reboot

5
推荐指数
1
解决办法
1770
查看次数

为什么面向对象的语言在嵌入式世界中不受欢迎?

我是固件开发人员,我通常用C或汇编开发固件.但是,我在嵌入式库中遇到了一个完全用C++实现的项目.现在我知道面向对象的语言可以在硬件层面上使用,但我想知道它们在开发嵌入式系统时不那么受欢迎.

oop embedded

3
推荐指数
1
解决办法
837
查看次数

接收UDP数据报并解析源端口

我正在尝试使用UDP发送命令.接收器应该接收UDP数据报并回复.但是,我希望始终将回复发送到发件人的源端口.我知道如何解析端口(struct header并将指针移动到正确的位置......),但是,我正在寻找一个函数来返回整个接收帧,包括标题而不仅仅是数据报/数据.

c sockets networking udp

1
推荐指数
1
解决办法
310
查看次数

标签 统计

c ×4

memory ×2

embedded ×1

linux ×1

malloc ×1

networking ×1

oop ×1

pointers ×1

realloc ×1

reboot ×1

sockets ×1

struct ×1

udp ×1