首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏程序萌部落

    C语言函数传值的相关问题

    (本文年代久远,请谨慎阅读)现有如下程序段: void getmem(char **p,int n){ *p=(char *)malloc(n); } int main(void) { // your 0; } 执行无误,输出hello,没有问题; 修改之后如下: void getmem(char *p,int n){ //一开始认为是多余的 p=(char *)malloc(n); } int printf("%s",str);free(str); return 0; } 代码分析 上述输出为null,其实不小心犯了个低级错误,那就是: 调用getmem时是值传递,str本身在getmem之后并没有获得相应空间 ,原因即getmem中的*p 作为局部变量并不能将p返回到main函数,即它只让局部的p指向了一段空间,没有意义。 而如果形参改为开始的 1 getmem(char **p,int n) 调用时使用 1 getmem(&str,100); 其意思是:char *p即指向指针的指针,意为“p指向一个变量,此变量存放的不是具体数据

    1.8K20发布于 2019-08-08
  • C++ Boost 实现异步IO远控

    (boost::asio::buffer("CPU: 15 %")); } // 判断收到的命令是否为GetMEM if (strncmp(buffer.data(), "GetMEM", strlen("GetMEM")) == 0)

    1.4K20编辑于 2022-12-28
  • 来自专栏磨磨谈

    查询Ceph的OSD占用内存

    ,separators=(',', ':')) print row if __name__ == '__main__': main() 运行脚本 [root@lab8106 getmem ]# python getmem.py +---------+-------+------+ | OSD\MEM | VIRT | RES | +---------+-------+------+ | osd.0 | 825KB | 43KB | | osd.1 | 826KB | 43KB | +---------+-------+------+ [root@lab8106 getmem ]# python getmem.py json {"osdmemused":{"osd.1":{"VSZ":"826KB","RSZ":"43KB"},"osd.0":{"VSZ":"825KB","

    2.6K10发布于 2018-08-06
  • 来自专栏【Android开发基础】

    Android开发学习笔记之 获得Android 可使用内存

    // 获得可用的内存 public class memInfo { public static long getmem_UNUSED(Context mContext) { MEM_UNUSED = mi.availMem / 1024; return MEM_UNUSED; } // 获得总内存 public static long getmem_TOLAL

    44020编辑于 2023-02-10
  • 来自专栏C语言及其他语言

    程序内存四区之模型建立

    define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> //堆 char *getMem 没有内存哪里有指针 char *getMem2() { char buf[64]; //临时变量 栈区存放 strcpy(buf, "123456789"); //printf( "buf:%s\n", buf); return buf; } int main() { char *tmp = NULL; tmp = getMem(10); if

    87720发布于 2019-08-06
  • 来自专栏xiaoxi666的专栏

    strcpy和strcat易忽略点

    首先来看一段C程序: 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 5 void GetMem(char 如果传本身,返回的已经是空悬指针了 6 pstr=(char*)malloc(20); 7 } 8 9 int main(){ 10 char* str; 11 GetMem

    77210发布于 2018-10-29
  • BoostAsyncSocket 异步反弹通信案例

    GetMemory") { char* id = (char*)vecSegTag[2].c_str(); send_message(tcpServer, atoi(id), "GetMEM ", strlen("GetMEM")); } // 解析 [shell] # Exit --id 100 if (vecSegTag.size() == 3 && vecSegTag << std::endl; socket.write_some(boost::asio::buffer("CPU: 15 %")); } // 判断收到的命令是否为GetMEM if (strncmp(buffer.data(), "GetMEM", strlen("GetMEM")) == 0) { std::cout << "获取MEM参数并返回给服务端

    1.4K20编辑于 2023-03-17
  • 来自专栏微卡智享

    数组类型与数组指针的巧妙利用

    这个只是定义了一块内存, 没用数组的概念, 有点麻烦} procedure TForm1.Button2Click(Sender: TObject); var buf: PMyRec; begin GetMem Button3Click(Sender: TObject); type TArr = array of TMyRec; var buf: PMyRec; i: Integer; begin GetMem TObject); type PArr = ^TArr; TArr = array[0..0] of TMyRec; var buf: PArr; i: Integer; begin GetMem TArr = array[0..100000] of TMyRec; {不要担心内存暴涨, 使用时我们只用其指针} var buf: PArr; i: Integer; begin GetMem

    1.2K20发布于 2019-07-24
  • C++ ASIO 实现异步套接字管理

    << std::endl; socket.write_some(boost::asio::buffer("CPU: 15 %")); } // 判断收到的命令是否为GetMEM if (strncmp(buffer.data(), "GetMEM", strlen("GetMEM")) == 0) { std::cout << "获取MEM参数并返回给服务端 GetMemory") { char* id = (char*)vecSegTag[2].c_str(); send_message(tcpServer, atoi(id), "GetMEM ", strlen("GetMEM")); } // 解析 [shell] # Exit --id 100 if (vecSegTag.size() == 3 && vecSegTag

    95050编辑于 2023-10-11
  • BoostAsyncSocket 异步反弹通信案例

    vecSegTag[0] == "GetMemory"){char* id = (char*)vecSegTag[2].c_str();send_message(tcpServer, atoi(id), "GetMEM ", strlen("GetMEM"));}// 解析 [shell] # Exit --id 100if (vecSegTag.size() == 3 && vecSegTag[0] == "Exit socket.write_some(boost::asio::buffer("CPU: 15 %"));}// 判断收到的命令是否为GetMEMif (strncmp(buffer.data(), "GetMEM ", strlen("GetMEM")) == 0){std::cout << "获取MEM参数并返回给服务端." << std::endl;socket.write_some(boost::asio:

    1.4K50编辑于 2023-03-16
  • 来自专栏菲宇

    Shell脚本实现Linux系统和进程资源监控

    对业务进程内存使用量进行监控 function GetMem { MEMUsage=`ps -o vsz -p $1|grep -v VSZ` (( MEMUsage /= 1000)) echo $MEMUsage } 下面的功能是通过上面的函数 GetMem获得此进程的内存使用,然后通过条件语句判断内存使用是否超过限制 判断内存使用是否超过限制 mem=`GetMem $PID` if [ $mem -gt 1600 ] then { echo “The usage echo “The usage of memory is normal” } fi 示例演示: 1)源程序(假设上面已经查询出 CFTestApp 的进程 ID 为 11426) mem=`GetMem

    3.4K51发布于 2019-06-11
  • 来自专栏python3

    DELPHI中完成端口(IOCP)的简单

    end else begin strmove(TempArray+TempCurr,SorucePacket,TempLen); TempCurr:=TempCurr+TempLen; GetMem TempArray),#0); TempCurr:=0; IsEnd:=false; end; FreeMem(Temp); end; end else //缓存中已经含有数据头 begin GetMem TempArray),#0); if SPLen>=PacketLength then begin strmove(TempArray,SorucePacket,PacketLength); GetMem

    1.7K10发布于 2020-01-06
  • 来自专栏Eureka的技术时光轴

    dnyArray分析,动态数组分析

    TDynArrayRec) + newLength*elSize, ElTypeInfo, oldLength - newLength); ReallocMem(pp, neededSize); p := pp; GetMem

    46320发布于 2019-07-24
  • 来自专栏C/C++与音视频

    JNI接口操作实践(二)

    updateArray(int [] src,int len); public native void passmem2C(int [] src,int len); public native int [] getmem2C 0); // 释放可能复制的缓冲区 } extern "C" JNIEXPORT jintArray JNICALL Java_com_example_jni_1test_MainActivity_getmem2C

    76730编辑于 2022-06-14
  • 来自专栏Java小王子

    Python获取系统信息的代码

    .split()[0] def getDisk(self): return os.popen("df -m |grep '/$'").readlines()[0].split() def getMem

    79030发布于 2021-11-01
  • C++ ASIO 实现异步套接字管理

    socket.write_some(boost::asio::buffer("CPU: 15 %"));}// 判断收到的命令是否为GetMEMif (strncmp(buffer.data(), "GetMEM ", strlen("GetMEM")) == 0){std::cout << "获取MEM参数并返回给服务端." << std::endl;socket.write_some(boost::asio: vecSegTag[0] == "GetMemory"){char* id = (char*)vecSegTag[2].c_str();send_message(tcpServer, atoi(id), "GetMEM ", strlen("GetMEM"));}// 解析 [shell] # Exit --id 100if (vecSegTag.size() == 3 && vecSegTag[0] == "Exit

    1.2K20编辑于 2023-08-29
  • 来自专栏大师级码师

    Python获取系统信息的代码

    .split()[0] def getDisk(self): return os.popen("df -m |grep '/$'").readlines()[0].split() def getMem

    72110发布于 2021-11-02
  • 来自专栏高并发

    glibc nptl库pthread_mutex_lock和pthread_mutex_unlock浅析

    . */ //获取当前线程id pid_t id = THREAD_GETMEM (THREAD_SELF, tid); //判断当前线程是否已经持有这个锁,也就是互斥锁的 } else { //这个分支就是PTHREAD_MUTEX_ERRORCHECK_NP类型的锁 //获取线程id pid_t id = THREAD_GETMEM EDEADLK; //如果不是同一个线程则按照一般的LLL_MUTEX_LOCK方式去获取锁 goto simple; } pid_t id = THREAD_GETMEM = THREAD_GETMEM (THREAD_SELF, tid)) return EPERM; if (--mutex->__data.__count ! = THREAD_GETMEM (THREAD_SELF, tid) || ! lll_islocked (mutex->__data.

    2.3K20编辑于 2022-06-23
  • 来自专栏Eureka的技术时光轴

    delphi完美的线程注入和卸载

    begin result:=0; if pid=0 then exit; EnabledDebugPrivilege(true); cbSize:= length(Dll)*2+21; GetMem

    1.3K10发布于 2019-07-24
  • 来自专栏浩Coding

    sigar进行JAVA后台系统资源监控错误:java.lang.UnsatisfiedLinkError

    org.hyperic.sigar.Mem.gather(Native Method) at org.hyperic.sigar.Mem.fetch(Mem.java:30) at org.hyperic.sigar.Sigar.getMem

    5.9K30发布于 2019-07-03
领券