alloca

    7熱度

    2回答

    見本測試程序: #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { if (argc < 2) goto end; char s[strlen(argv[1]) + 1]; strcpy(s, argv[1]); printf("s=%s\n"

    1熱度

    1回答

    是否有可能在複合語句中使用alloca? 例子: typedef struct { size_t len; char* data; } string_t; #define str_to_cstr(str) \ ({ \ char* v = alloca(str.len + 1); \ v[len] = 0; \ memcpy(v, str

    3熱度

    1回答

    在大多數平臺上,alloca只是歸結爲堆棧指針的內聯調整(例如,從x64上的rsp減去另外一些邏輯以保持堆棧對齊)。 我在看代碼gcc爲alloca生成,這很奇怪。看看下面的簡單例子: #include <alloca.h> #include <stddef.h> volatile void *psink; void func(size_t x) { psink = alloc

    2熱度

    1回答

    我在其中一個項目中使用alloca函數,並決定使用CMake來確保它可用。所以我說這一點對我的CMakeLists.txt文件: include(CheckSymbolExists) check_symbol_exists(alloca stdlib.h;cstdlib ALLOCA_EXISTS) if (NOT ALLOCA_EXISTS) message(FATAL_ERROR

    0熱度

    1回答

    我正在構建一個內部使用函數_alloca()(在malloc.h中定義)的共享對象(.so)。這個.so編譯順利。但只要我調用一個函數,使得使用_alloca的(),我的應用程序崩潰蒙山控制檯輸出 symbol lookup error: undefined symbol: _alloca 所以:對我有什麼庫生成期間鏈接的任何主意,讓這個外部參考解決? 平臺是CentOS7 x64 謝謝!

    2熱度

    2回答

    可能重複: In which cases is alloca() useful? 我最近偶然看到了用,alloca()函數。谷歌搜索告訴我,它用於分配堆棧空間。我無法抓住它的應用程序?另外,使用它有什麼缺陷嗎?

    0熱度

    1回答

    我想對ll文件做一些檢測。我想要實現的任務之一是以下幾點。 每當遇到一個像AllocaInstr: %1 = alloca i32 我要儀器的功能call __save_addr()後如下: %1 = alloca i32 call __save_addr(i32* %1) 有沒有辦法來實現這一目標?

    0熱度

    1回答

    我試圖使項目polyworld但得到一個錯誤編譯qt_clust.o g++ -o bin/qt_clust .bld/qt_clust/tools/clustering/qt_clust.o -L/usr/lib -L/usr/local/lib -L/usr/include -lz -lgsl -lgslcblas -lgomp ,並得到 "_alloca", referenced fro

    2熱度

    2回答

    如果通過GNU庫文檔閱讀,你可以看到: 一些非GNU系統無法支持ALLOCA,所以它的可移植性。 但是,用C語言編寫的較慢的alloca仿真適用於 ,這個缺點在系統上使用。 假設VLA不可用,那麼C模擬alloca()會如何?

    2熱度

    2回答

    我正在使用一個很好的GCC擴展,它允許我們在結構中聲明VLA。現在我發現了一種通過這種方式將VLA傳遞給函數的方法(通過值)。我也找到了一種方法來回報一個,但在一個非常有限的情況下。 本實施例的功能碼是這樣的: extern void func3() { size_t size; scanf("%zu", &size); struct tx{int _[size