将argv给定的内存地址分配给c

时间:2019-03-02 15:20:29

标签: c pointers memory argv

我在C语言中有一个函数,该函数获取一个指针并打印其反汇编代码。

void print_dis(void *addr) {
    print_dis(addr);
}

一切正常,但现在我想以argv从命令行传递此内存地址。

如何传递内存地址并将其分配给指针,以便其运行方式如下:

my_prog 0x1234567890abcd

,并且print_dis将获得该地址作为addr

2 个答案:

答案 0 :(得分:0)

如果我误解了您的问题,请原谅我,但是您可以拿指针使用printf("%p", ptr);吗?或者,如果您要使程序写入另一个程序的stdin,则可以使用linux管道。

您也可以使用reinterpret_cast<WhateverType>(source);

从argv获取char *地址的值。

答案 1 :(得分:0)

您可以将字符串从argv [1]转换为无符号长整数,并使用强制转换运算符(void *)将其分配给通用指针,如下面的示例所示。请小心,这很危险!

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
   void* ptr = (void*) strtoul(argv[1]+2,0,16);

   printf("%lX", (unsigned long) ptr);

}.
/*
Output:
/a.out 0x123456789abcdef
Result ptr:123456789ABCDEF
*/